問題タブ [pythonpath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonを実行しているサブプロセスでインポートエラーが発生する
サブプロセスから開始することにより、PythonプログラムからPythonスクリプトを実行しようとしています(理由は、スクリプトの実行時にwx.CallAfterとCloseの組み合わせでメインプログラムを終了する必要があるためです)。ただし、スクリプトを実行すると、1行目にエラーが発生ImportError: No module named os
し、PythonPathに関係があると思われますが、ターミナルからスクリプトを正常に実行できます。
この方法で実行すると、スクリプトがコア モジュールを認識できないのはなぜですか?
編集:問題の行は次のとおりです。
BASE_DIR は、スクリプトが存在するディレクトリです。
python - Pythonic モジュールの編成 - ルート ディレクトリ内のファイルを参照する方法は?
「project」というフォルダーに Python コードがあるため、コード ファイルは project/*.py にあります。その中にサブモジュールが必要です。
各モジュールディレクトリには、独自のinit .py ファイルがあります。
mymodule1 (project/mymodule1/test.py) 内にファイル「test.py」があり、「コード」から何かを参照したいとします。たとえば、関数「myfunc」をインポートします。
問題は、ユーザーが「project/」ディレクトリを PYTHONPATH に配置しない限り、「コード」が見つからないことです。これを回避し、ある種の「相対パス」を使用して myfunc をインポートする方法はありますか?
基本的に、スクリプト内からプログラムで変更できない限り、コードのユーザーに PYTHONPATH の変更を強制したくありません。私はそれが箱から出して動作することを望みます。
これはどのように行うことができますか?どちらの解決策も良いです: プログラムで PYTHONPATH を変更するか、より理想的には、ある種の相対インポートを使用して「コード」を参照します。それは「myfunc」に関連しています。
編集:誰かがパッケージ内インポートの適切な例を示してもらえますか? 「mymodule1」からやってみました:
「foo」はcode.pyにありますが、機能しません。mymodule1 に init .py があるので、次のようにします。
ここで、module1_code.py は、「code.py」で定義された関数である foo をインポートしようとします。
編集:私がまだ抱えている主な混乱は、プロジェクト/サブ1/テスト階層を示す私のメッセージに応答して与えられた例を採用した後でも、サブ1に「cd」して「python test.py」を実行してそれを実行できないことです。仕事。ユーザーは「project」を含むディレクトリにいて、「import project.sub1.test」を実行する必要があります。ユーザーがどのディレクトリにいるかに関係なく、これが機能することを望みます。この場合、ユーザーは project/sub1/ にあるファイル「test.py」を実行する必要があります。したがって、テストケースは次のとおりです。
エラーが発生します:
これはどのように修正できますか?
ありがとう。
python - Python IDLEを使用しているときに別の場所からモジュールをインポートするにはどうすればよいですか?
私はこれを2日以上理解しようとして、インターネットとチュートリアルをスクリーニングしましたが、それでも問題は解決していません。私は本当の初心者で、自分が何をしているのかまだよくわかりません。
私が使用しているソフトウェア:Mac OS X 10.6 Python v3.2.2インタラクティブインタープリター(IDLE)
問題:IDLEのデフォルトディレクトリは/ Users / ME /Documents/です。拡張子が.pyのファイルは、このディレクトリにある場合にのみ開くことができます。ただし、このソフトウェアに関連するすべての.pyファイルなどを保存したいフォルダーを作成しました。現在、IDLEは私が選択したディレクトリから.pyファイルをロードできません。
私が最初にしたことは、IDLEに追加したことです:importsys。sys.path.append('Users / Mydir /')sys.path
ただし、2010年の既存のスレッドでは、sys.pathはインタープリター専用であり、これを変更する場合は、PYTHONPATH環境変数を変更する必要があると読みました。
PYTHONPATH = "/ Me / Documents / mydir:$ PYTHONPATH" export PYTHONPATH
ただし、これを使用する方法がわかりません。次の質問に対する回答が見つかりません。1)プログラムをインストールしたときにPYTHONPATH(.py?)がコンピューターに既に存在しますか?はいの場合、どこにありますか?どこにも見つかりません。いいえの場合、作成する必要があります。しかし、IDLEがデフォルト以外のディレクトリからファイルをロードできるようにするには、コンテンツはどこに、何を含める必要がありますか?太字の単語のみを含める必要がありますか?
問題を明確にしたいと思います。
乾杯
python - virtualenv の使用時に pythonpath に Git サブモジュールを含める
Django プロジェクトのバージョン管理に Git を使用しています。
可能な限り、プロジェクト自体の一部ではないが、プロジェクトが依存しているすべてのソースコードは、Git サブモジュールとして取り込まれます。これらはlib
ディレクトリに存在し、python パスに含める必要があります。ディレクトリ/ファイルのレイアウトは次のようになります。
Pythonパスにライブラリを含めるためのベストプラクティスは何だと思いますか?
私は virtualenv を使用しているので、ライブラリを virtualenv の site-packages ディレクトリに簡単にシンボリック リンクできます。ただし、これにより virtualenv がこの特定のプロジェクトに関連付けられます。私の理解では、virtualenv は私のファイルに依存すべきではありません。代わりに、私のファイルは virtualenv に依存する必要があります。
このプロジェクトの異なるローカル コピーに同じ virtualenv を使用することを考えていましたが、このようにするとその機能が失われます。これにアプローチするより良いアイデアはありますか?
アップデート:
最善の解決策は、すべての依存関係を pip に管理させることでした。
ただし、これは、pipがまだ相対パスを適切に処理できないため、git サブモジュールを使用できないことを意味します。したがって、外部依存関係は virtualenv (通常: my_env/src/a_python_module) に存在する必要があります。
プロジェクトツリーにいくつかの依存関係を持たせるために、サブモジュールを使用したいと思います。リポジトリの一部を変更するためにこれらのリポジトリをフォークする必要があり、将来的にはさらに変更する必要がある可能性が高いため、これは私にとってより理にかなっています。
python - MacOSXでEclipseに$PYTHONPATHを継承させる方法
Eclipse + PyDevをセットアップしようとしているので、Eclipse内からPYTHONPATHを変更する必要はありませんが、ホームディレクトリ内の.profileドキュメントからPYTHONPATHを継承します。それは可能ですか、それともEclipseのPYTHONPATHエディターを使用して実際にPYTHONPATHの場所を追加する必要がありますか?同じファイルを使用して、ターミナルベースのPythonからEclipseのPythonに移行すると、さまざまなエラーが発生するため、質問します。
python - Django はプロジェクト パスをどこに保存しますか?
作成したプロジェクトの名前を変更したい:
しかし、フォルダーとプロジェクト内のすべての参照の名前を変更した後も、まだ開始できません。myproject.settings が pythonpath にないと言われています。古いプロジェクト名は pythonpath にも含まれていないため、django はこれらの名前とパスを別の場所に保持する必要があると考えています。この情報はどこに保存されますか?
実行中に sys.path へのパスを追加するだけでよいことはわかっていますが、これを完全に修正したいと考えています。
私が実行した場合:
私は得る:
「mysite」の名前はすでに正しい名前であり、フォルダー名に対応しています。しかし、まだそれを見つけることができません。
何か案は?
PS: 私は debian を実行しています。
python - Pythonパッケージで実行スクリプトを配布する適切な方法は?
一連のスクリプトを含むmypackageというPythonパッケージがあるとします。mypackageがsite-packagesディレクトリに入ると、ユーザーは通常どおり、mypackage内のさまざまなPythonファイルをPythonのmypackage.submodule1、mypackage.submodule2として参照できます。ただし、これらの一部は、コマンドラインから呼び出すことを目的としたスクリプトです。たとえば、submodule1には、次のものがあります。
「mypackage」がパスに含まれると、ユーザーがこれらのサブモジュールをコマンドラインスクリプトとしてクリーンに使用できるように、mypackageを適切に配布/パッケージ化するにはどうすればよいですか?私はあなたができると思ったでしょう:
しかし、この構文は無効です。言い換えると、実際の「mypackage」ディレクトリをPYTHONPATHに含めることなく、ユーザーがパッケージのサブモジュールをPyからインポートするのではなく、スクリプトとして参照するにはどうすればよいでしょうか。(「mypackage」を含むsite-packagesなどのトップレベルディレクトリのみがPYTHONPATHに含まれている必要があります。)
ありがとう。
python - PYTHONPATHに新しいモジュールを挿入するにはどうすればよいですか?
emacs用にhttp://bitbucket.org/agr/ropemacsをインストールしています。
README.txtには、次のように書かれています。
これが機能するには、ropeとropemacsが含まれている必要があることに注意してくださいPYTHONPATH
。
sys.path pythonを確認しましたが、ropemacsはありません。しかし、私はそれをインストールしました!PYTHONPATHにropemacsを挿入するにはどうすればよいですか?
python - python インポート用のモジュールが見つかりません (Mac の場合)
この質問の前に、私は Python をほとんど使用したことがなく、Mac OS ではまったく使用したことがないということを述べておきます。
2 つの Python プロジェクトが送られてきましたが、そのうちの 1 つを実行する必要があります。関心のあるプロジェクトを (TextWrangler で) 開いて実行すると、次のエラーが表示されます。
ええと.. fetch_command は、/Users/myname
実行しようとしているプログラムと同じディレクトリ ( ) にある他のプログラムのモジュールです。(アプリケーションの不十分なドキュメントは次のことを示唆しています:
「あなたのpythonインストールディレクトリにインストールしようとはしません。ホームディレクトリまたはプレフィックスにインストールして、PYTHONPATHとPATHを設定します(またはvirtualenvを使用します)」
それで、PATHとPYTHONPATHに追加しようとしました(そして成功しました- and を呼び出してテストしましたecho $PATH
) 。これは何もしませんでした。次に、PATH と PYTHONPATH に追加しようとしましたが、これもうまくいきませんでした。私が間違っていることを知っている人はいますか..?echo $PYTHONPATH
Users/myname
/Users/myname/other_python_app/src
よろしくお願いします!
python - パス上にないパッケージ内の Python 相対インポート
Python パッケージ内の親ディレクトリにある (パス上にない) ファイルを子ディレクトリのファイルにインポートするにはどうすればよいですか?
私はPythonパッケージングの語彙について完全に明確ではないので、例として:
dir1/in_dir1.py:
dir1/dir2/in_dir2.py
それがpythonパス上にないことを考えると、にインポートするdir1
最良の方法を探しています。in_dir1
in_dir2
from .. import in_dir1
この Q/Aにfrom ..dir1 import in_dir1
基づいて試してみましたが、どちらも機能しません。その意図を実行する正しい方法は何ですか? この Q/Aには答えが含まれているようです。ただし、どうすればいいのか、PEP 366を使用して実際に問題を解決する方法がよくわかりません
両方の__init__.py
ファイルは空で、私はv2.6を使用しています。
私は、Google が見つけ続けているパス ハックを使用せずに、これを実行しようとしています。