仮想環境を作成しpython3
ます(シンボリックリンクを明示的に回避します--copies
):
» python3 -m venv --without-pip --copies venv
これが私の完全な仮想環境です。
» tree venv/
venv/
├── bin
│ ├── activate
│ ├── activate.csh
│ ├── activate.fish
│ ├── python
│ └── python3
├── include
├── lib
│ └── python3.4
│ └── site-packages
├── lib64 -> lib
└── pyvenv.cfg
を無効にしてPYTHONPATH
、外部から何も漏れていないことを確認します。
» PYTHONPATH=""
venv を有効にします。
» source venv/bin/activate
activate
my を汚染していないことを確認しPYTHONPATH
ます。
» echo $PYTHONPATH
(空白、予想通り)
私は正しいpythonを使用しています:
» which python
/foo/bar/venv/bin/python
ただし、システム モジュールには引き続きアクセスしています。
» python
Python 3.4.3 (default, Oct 14 2015, 20:28:29)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import unittest
>>> print(unittest)
<module 'unittest' from '/usr/lib/python3.4/unittest/__init__.py'>
>>>
import unittest
仮想環境にはそのようなモジュールがないため、ステートメントは失敗すると思います。
私が知りたいのですが:
- virtualenv でシステム パッケージにアクセスするのはなぜですか?
- 完全に自己完結型の仮想環境を作成するにはどうすればよいですか?