作成済みのvirtualenvにpythonpathをどのように設定しますか?


106

編集するファイルとその方法は?仮想環境を作成しました。


正しいディレクトリを指していることを確認してください。まだ持っていない場合は、「新規」ボタンをクリックして作成します。

11
add2virtualenvコマンドを使用します。
s29

5
add2virtualenvはvirtualenvwrapperコマンドです。の一部ではありませんvirtualenv
kojiro 2017

回答:


124

編集#2

正しい答えは@arogachevの答えです。


PYTHONPATHvirtualenvで使用されるものを変更する場合は、virtualenvのbin/activateファイルに次の行を追加できます。

export PYTHONPATH="/the/path/you/want"

このように、PYTHONPATHこのvirtualenvを使用するたびに新しいものが設定されます。

編集: (@RamRachumのコメントに答えるため)

で元の値に戻すにはdeactivate、次を追加します

export OLD_PYTHONPATH="$PYTHONPATH"

前述の行の前に、次の行をbin/postdeactivateスクリプトに追加します。

export PYTHONPATH="$OLD_PYTHONPATH"

1
それも削除されdeactivateますか?
Ram Rachum、2012年

1
つまり、これは、新しく作成された仮想環境PYTHONPATHに、virtualenvローカルパスではなくデフォルト(グローバル環境)があることを意味します。
ducin 2013年

6
これは私にとって非常にうまくいきました。virtualenvwrapperは使用していません。唯一の注意は、私はそのようなbin / postdeactivateスクリプトを持っていなかったことです。むしろ、アクティブ化には非アクティブ化機能がありました。したがって、コード行はそこに配置する必要があります。関数の残りの操作としてifステートメントでラップするように注意してください。
ニコロ・

2
virtualenvがデフォルトでこれを行わないのは奇妙に思えます。
Seth

2
編集#2は嘘です!:)右の答えは@アリエン・P・ド・フリースの1
Berriel

73

@ s29のコメントが答えになるはずです。

仮想環境にディレクトリを追加する1つの方法は、virtualenvwrapper(これは多くのことに役立ちます)をインストールしてから、

mkvirtualenv myenv
workon myenv
add2virtualenv . #for current directory
add2virtualenv ~/my/path

これらのパスを削除する場合は、ファイルを編集します myenvhomedir/lib/python2.7/site-packages/_virtualenv_path_extensions.pth

virtualenvwrapperのドキュメントを見つけることができhttp://virtualenvwrapper.readthedocs.org/en/latest/

この機能に関する特定のドキュメントは、 http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html?highlight = add2virtualenvにあります。


6
削除するには:add2virtualenv -d
thecheech

1
それははるかに優れているとしてだけで、鉱山でこの答えをリンク
mdeous

27

.pth検索するディレクトリを含むファイルを作成して、ディレクトリに配置できますsite-packages。例えば:

cd $(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
echo /some/library/path > some-library.pth

効果はに追加/some/library/pathするのと同じでsys.pathvirtualenv設定に対してローカルのままです。


7
私はこのアプローチが本当に好きです。アクティブ化/非アクティブ化する行を追加するのと同じくらい気まぐれではなく、virtualenvwrapperを使用する必要はありません。pythonを起動してsite-packages dirを見つけたくない場合は、かなり予測可能なパスにあります$VIRTUALENV_ROOT/lib/pythonX.Y/site-packages。.pthファイルのドキュメント:docs.python.org/3.6/library/site.html
Alec

2
ワークスペースがファイルシステム内を移動するため、絶対パスを入力したくありませんでした。そして、私のプロジェクトパスにはスペースがあります。そこで、少し変更したコマンドを入力しました。pushd "$(venv/bin/python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")" ...path/to/project/venv/lib/python3.7/site-packages ...path/to/project echo ../../../../src > my_project.pth popd次に、virtualenvを非アクティブ化して、再度アクティブ化しました。これで、プロジェクトディレクトリがどこにあるかを知る必要があるプロジェクトコードを実行できました。
ジムデラハント

4
これが正解です。ベンダー提供のスクリプト(/bin/activate)を変更することは不正行為であり、サードパーティのツールをインストールすることは、組み込みの方法を使用してそれを達成するよりも劣ります。
レッドレッド

2
  1. virtualenvを初期化する
cd venv

source bin/activate
  1. 次のコマンドを入力して、Pythonパスを設定または変更するだけです。
export PYTHONPATH='/home/django/srmvenv/lib/python3.4'
  1. pythonパスをチェックするには、pythonで入力します。
   python

      \>\> import sys

      \>\> sys.path

1

アクティブ化スクリプトを変更して、ファイル.virtualenvrcが現在のディレクトリに存在する場合はそれをソースにし、PYTHONPATHアクティブ化/非アクティブ化時にファイルを保存/復元します。

パッチを当てたactivateスクリプトはここにあります。。これは、virtualenv 1.11.6によって作成されたアクティブ化スクリプトのドロップイン置換です。

次に、私はこのようなものを私のに追加しました.virtualenvrc

export PYTHONPATH="${PYTHONPATH:+$PYTHONPATH:}/some/library/path"

-20

ここではすでに回答されています-> 私の仮想環境(python)はPYTHONPATHを壊しますか?

UNIX / LINUX

「export PYTHONPATH = / usr / local / lib / python2.0」をこれを〜/ .bashrcファイルに追加し、「source〜/ .bashrc」または「。〜/ .bashrc」と入力してソースを作成します。

WINDOWS XP

1)コントロールパネルに移動します2)システムをダブルクリックします3)詳細設定タブに移動します4)環境変数をクリックします

[システム環境変数]ウィンドウで、PYTHONPATHという名前の変数があるかどうかを確認します。すでに持っている場合は、それが正しいディレクトリを指していることを確認してください。まだ持っていない場合は、「新規」ボタンをクリックして作成します。

PYTHON CODE

または、コードの下で次のようにすることもできます:

import sys
sys.path.append("/home/me/mypy") 

4
-1:これは、virtualenvのPYTHONPATHではなく、ユーザーのPYTHONPATHに対応します。
twneale 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.