編集: Ulf Rompeのコメントに基づいて、「0」ではなく「1」を使用することが重要です。そうしないと、sys.pathが壊れてしまいます。
私はかなり長い間(1年以上)Pythonをやっていますが、なぜ人々がのsys.path.append()
代わりに使用することを勧めているのかについていつも混乱していますsys.path.insert()
。実演させてください。
PyWorkbooksという名前のモジュール(コンピューターにインストールされている)で作業しているが、同時にPyWorkbooksを組み込んだ別のモジュール(PyJobなど)で作業しているとします。PyJobに取り組んでいるときに、修正しているPyWorkbooksにエラーが見つかったので、開発バージョンをインポートしたいと思います。
両方で作業する方法は複数ありますが(たとえば、PyWorkbooksプロジェクトをPyJob内に配置することもできます)、それでもパスを操作する必要がある場合があります。ただし、PyWorkbooksがあるフォルダーに対して単純にを実行することはできませんsys.path.append()
。どうして?PythonはインストールされたPyWorkbooksを最初に見つけるからです!
これが、sys.path.insert(1、path_to_dev_pyworkbooks)を実行する必要がある理由です。
要約すれば:
sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
または:
sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
これは過去にいくつかのハングアップを引き起こしました、そしてsys.path.insert(1, path)
あなたが手動でパスを挿入しているように、私たち(コミュニティとして)が推薦し始めたら本当にそれが欲しいです私はそれがあなたが望むパスであると言っても安全だと思います使用する!
それとも何か問題がありますか?それは時々私を悩ませ、私はそれをオープンに望んでいた質問です!
sys.path.insert(1, dev_folder)
が、まだdevモジュールが見つからず、インストールされているモジュールのみを使用しています。これを修正するにはどうすればよいですか?