私の仮想環境で作業すると、仮想環境で解決されないインポート呼び出しは「元の」環境で解決されます。同時に、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ディレクトリ以外のコードは、相対的なインポートパスの使用に関して「十分安全」であるとみなされ、ユーザはそれらのアイテムと衝突しないようにする責任があります。
返信いただきありがとうございます。 pyenvはPythonのさまざまな "システム"バージョン間のインストールと切り替えを行うためのものです。 (残念ながら私はWindows上で動作していますが、pyenvはWindowsではサポートされていません)この質問は仮想環境に関するもので、すでに複数のバージョンのpythonの問題とは異なることがわかっています。 –