6

昨日、bin/activatevirtualenvのスクリプトを編集してPYTHONPATH、外部パッケージの開発バージョンを含むように環境変数を設定しました。setup.pyパッケージのがコマンドàlaを使用distutilsし、サポートしていないため、これを行う必要がありました。ターミナルでPythonインタープリターを使用する限り、設定は正常に機能します。developsetuptoolsPYTHONPATH

しかし、ちょうど今、PyCharmでプロジェクト設定を開いて、PyCharmが問題の外部パッケージを認識していないことを発見しました-PyCharmは外部パッケージもそのパスもリストしていません。bin/activate当然、それはPyCharmがスクリプトを解析またはソースしない(そして確実にできない)ためです。PyCharmプロジェクト設定に手動でパスを追加することもできますが、それは自分自身を繰り返す必要があることを意味します(PyCharmプロジェクト設定で1回、bin/activateもう一度)。それはドライではなく、それは悪いことです。

site-packagesで、外部パッケージを指すシンボリックリンクを作成することはほぼ完璧です。このようにして、少なくともPyCharmのソースエディターがパッケージを見つけることができ、ターミナルのPythonインタープリターも見つけることができます。しかし、どういうわけか、PyCharmはまだプロジェクト設定にパッケージをリストしておらず、そのままにしておいてよいかどうかわかりません。

では、どうすれば外部パッケージをvirtualenv /projectに追加して…</p>することができますか?

  1. 繰り返す必要はありません。そして…</li>
  2. PythonインタープリターとPyCharmの両方がそれを認識しますか?
4

3 に答える 3

2

パッケージがsetuptools pipmonkeypatchessetup.pyを使用していない場合でも、強制的に使用しますsetuptools

PYTHONPATH多分あなたはそのハックを取り除くことができますそしてpip install -e /path/to/package

于 2013-02-02T12:14:07.873 に答える
-1

1つのオプションは、パスを動的に追加することです。

try:
    import foo
except ImportError:
    sys.path.insert(0. "/path/to/your/package/directory")
    import foo

ただし、そのコードがアプリケーションの最終バージョンに入らない可能性が非常に高いため、これは最善の解決策ではありません。もう1つのオプション(およびより適切なimho)は、パッケージ用の単純なsetup.pyファイルを作成し、developパラメーターを使用してvirtualenvにデプロイするか、-eパラメーターを使用してpipすることです。

python setup.py develop 

また:

pip install -e /path/to/your/package/directory

http://packages.python.org/distribute/setuptools.html#development-mode

于 2013-02-01T14:18:03.800 に答える
-1

これは、実際のファイルがどこにあるかに関係なく機能するndpuの回答の改善です。

シンボリックリンクを逆参照してから、sys.pathローカルインポートをインポートする前に設定できます。

import os.path
import sys

# Ensure this file is dereferenced if it is a symlink
if __name__ == '__main__' and os.path.islink(__file__):
    try:
        sys.path.remove(os.path.dirname(__file__))
    except ValueError:
        pass
    sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))

# local imports go here
于 2019-08-22T16:16:18.200 に答える