2017-05-13 4 views
2

私の仮想環境で作業すると、仮想環境で解決されないインポート呼び出しは「元の」環境で解決されます。同時に、https://docs.python.org/3/tutorial/modules.html#intra-package-referencesによる によると、相対参照が許可されます。私はこれが、プログラムの実行に入る、またはプログラムの実行を入力しようとする、同じ名前のオブジェクトの異なるバージョンとの混乱/競合につながる可能性があることを心配します。私はPythonの初心者ですが、この問題はドキュメントでカバーされていると確信していますが、見つけられません。すべてのポインタ?python仮想環境はスタンドアローンであるはずですか?そうでない場合は、クロス環境の混乱が危険ですか?

アップデート2017年5月13日 - 私のpython 3.6.1に対して次のdocumentionが見つかりました:Windowsではhttps://docs.python.org/3/library/venv.html#creating-virtual-environments

を、次のようにvenvコマンドを呼び出す:

c:\>c:\Python35\python -m venv c:\path\to\myenv

usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] ENV_DIR [ENV_DIR ...]

--system-site-packages: Give the virtual environment access to the system site-packages dir.

デフォルトでは、システムのsite-packagesディレクトリにアクセスできません。したがって、システムのsite-packagesディレクトリ以外のコードは、相対的なインポートパスの使用に関して「十分安全」であるとみなされ、ユーザはそれらのアイテムと衝突しないようにする責任があります。

答えて

1

これはpyenvを使用しようと、大きな問題ではない、とあなたはスタンドアロンPythonのバージョンを持っていることができるようになりますし、任意のインポート呼び出しが解決しない場合、それは特定のpythonのパスを検索します(によってインストールpyenv)を使用して、syspyの代わりにvirtualenvを作成しました。

  1. pyenv
  2. があなたのvirtualenvのを設定するためにpyenvであなたがインストールされている特定のPythonのバージョンを使用して、特定のPythonのバージョンをインストールしてインストールします。

あなたのpythonコード

import sys 
print(sys.path) 

の解決パスをチェックすると、リスト内のディレクトリが注文のpythonがパスを検索表します。

+0

返信いただきありがとうございます。 pyenvはPythonのさまざまな "システム"バージョン間のインストールと切り替えを行うためのものです。 (残念ながら私はWindows上で動作していますが、pyenvはWindowsではサポートされていません)この質問は仮想環境に関するもので、すでに複数のバージョンのpythonの問題とは異なることがわかっています。 –

関連する問題