質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

Q&A

解決済

2回答

1390閲覧

venvで起動しているPyCharmでPYTHONPATHがimportされない

退会済みユーザー

退会済みユーザー

総合スコア0

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

0グッド

1クリップ

投稿2020/03/18 06:12

編集2020/03/18 19:11

scriptsというディレクトリに複数のプロジェクトで一時的に使うスクリプトをまとめ、それを各プロジェクト内から呼び出そうとしています。
PYTHONPATHにそのディレクトリを追加したのですが、import scriptsしようとするとREPLからもコードからも認識されていないようです。
echo $PYTHONPATHではきちんと認識されています。
どうすれば良いでしょうか?

~/dev/ -scripts/ -__init__.py -debug.py -logging.py ... -project_a/ -main.py -project_b/ ...

zshrc

1# add scripts to PYTHONPATH 2export PYTHONPATH="$HOME/dev/scripts:$PYTHONPATH"

terminal

1❯ echo $PYTHONPATH 2/Users/solzard/dev/scripts: 3 4❯ python 5Python 3.8.2 (default, Mar 11 2020, 00:28:52) 6[Clang 11.0.0 (clang-1100.0.33.17)] on darwin 7Type "help", "copyright", "credits" or "license" for more information. 8 9>>> import subprocess 10 11>>> subprocess.run("echo $PYTHONPATH", shell=True) 12/Users/solzard/dev/scripts: 13CompletedProcess(args='echo $PYTHONPATH', returncode=0) 14 15>>> import scripts 16Traceback (most recent call last): 17 File "<stdin>", line 1, in <module> 18ModuleNotFoundError: No module named 'scripts'

Python

1import scripts 2 3 4def main(): 5 pass 6 7 8if __name__ == "__main__": 9 main() 10 11""" 12>>> Traceback (most recent call last): 13>>> File "/Users/solzard/dev/project_a/main.py", line 1, in <module> 14>>> import scripts 15>>> ModuleNotFoundError: No module named 'scripts' 16"""

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

PYTHONPATHの中、この場合だとdebug.pyを使用したい場合には import debug とすることで使用する事が可能です。

import scripts としたい場合には上位のフォルダを指定してください。今回の場合でしたら $HOME/dev になります。

参考

https://docs.python.org/ja/3/using/cmdline.html#envvar-PYTHONPATH

投稿2020/03/18 06:34

yamap55

総合スコア1376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/03/18 06:38

import debugとしてもやはり、ModuleNotFoundError: No module named 'debug' となります。
yamap55

2020/03/18 06:42

REPLでsys.pathを確認するとPYTHONPATHで設定した値が設定されていますでしょうか?
退会済みユーザー

退会済みユーザー

2020/03/18 06:47

REPLだとdev/scriptsが反映されていて、PyCharm上のdev/project_a/main.pyで確認すると反映されていないようです。 project_aのほうはvenvなので、少し確認してみます
yamap55

2020/03/18 06:54

PyCharm内で指定できる気がしますが、手元にPyCharmがないため確認できないです。申し訳ありません。
退会済みユーザー

退会済みユーザー

2020/03/18 06:57

いえ、取っ掛かりが見えただけでもありがたいです。
guest

0

ベストアンサー

PyCharmのみなのかは分かりませんが、venv上でPythonを実行する場合、globalの$PYTHONPATHが参照されないようです。
venv内のsite-packagesにscriptsへのパスを記したscripts.pthを置いた後に、Invalidate Caches and RestartでPyCharmを再起動することで解決しました。

# scripts.pth # location: /Users/solzard/dev/.venv/math_python/lib/python3.8/site-packages/scripts.pth /Users/solzard/dev/scripts

投稿2020/03/18 19:10

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問