Virtualenv 失败 "does not start with prefix"
Virtualenv failing with "does not start with prefix"
我刚刚从 github 下载了 python 3.6.1 并将其构建在本地目录中。现在我正在尝试使用该版本的 python 创建一个 virtualenv,但我不断收到:
Running virtualenv with interpreter /home/giorgio/tools/cpython-3.6.1/python
Using base prefix '/usr/local'
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 2462, in <module>
main()
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 762, in main
symlink=options.symlink,
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 998, in create_environment
install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages=site_packages, clear=clear, symlink=symlink)
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 1219, in install_python
copy_required_modules(home_dir, symlink)
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 1147, in copy_required_modules
dst_filename = change_prefix(filename, dst_prefix)
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 1111, in change_prefix
assert False, "Filename {} does not start with any of these prefixes: {}".format(filename, prefixes)
AssertionError: Filename /home/giorgio/tools/cpython-3.6.1/Lib/os.py does not start with any of these prefixes: ['/usr/local', '/usr/local']
我不想在系统上全局安装此版本的 python。还有其他方法可以让 virtualenv 使用它吗?
我认为 Python 3.6 引入了一种创建不依赖于通过 usr/local 路由的虚拟环境的新方法。
python3 -m venv /path/to/new/virtual/environment
Here 是文档。
正确的实现方式是在配置构建选项时设置前缀为本地目录,然后执行make install
。因此,如果您要安装的目录是 $HOME/pythons
,那么在构建目录中 运行:
./configure --prefix="${HOME}/pythons"
make
make install
我 运行 尝试使用我的 brew 安装版本 Python 3.9.5 在 macOS 上创建新的虚拟环境时出现此错误。 (mkvirtualenv
与 virtualenvwrapper
)
我的命令格式通常是:
mkvirtualenv -p python3 [env-name]
不确定是什么导致它搞砸了,但最终我通过 运行ning 让它再次工作:
python3.9 -m venv ~/.virtualenvs/myenvname
这会将 env 放在您的正常位置,您仍然可以 运行 workon myenvname
我刚刚从 github 下载了 python 3.6.1 并将其构建在本地目录中。现在我正在尝试使用该版本的 python 创建一个 virtualenv,但我不断收到:
Running virtualenv with interpreter /home/giorgio/tools/cpython-3.6.1/python
Using base prefix '/usr/local'
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 2462, in <module>
main()
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 762, in main
symlink=options.symlink,
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 998, in create_environment
install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages=site_packages, clear=clear, symlink=symlink)
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 1219, in install_python
copy_required_modules(home_dir, symlink)
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 1147, in copy_required_modules
dst_filename = change_prefix(filename, dst_prefix)
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 1111, in change_prefix
assert False, "Filename {} does not start with any of these prefixes: {}".format(filename, prefixes)
AssertionError: Filename /home/giorgio/tools/cpython-3.6.1/Lib/os.py does not start with any of these prefixes: ['/usr/local', '/usr/local']
我不想在系统上全局安装此版本的 python。还有其他方法可以让 virtualenv 使用它吗?
我认为 Python 3.6 引入了一种创建不依赖于通过 usr/local 路由的虚拟环境的新方法。
python3 -m venv /path/to/new/virtual/environment
Here 是文档。
正确的实现方式是在配置构建选项时设置前缀为本地目录,然后执行make install
。因此,如果您要安装的目录是 $HOME/pythons
,那么在构建目录中 运行:
./configure --prefix="${HOME}/pythons"
make
make install
我 运行 尝试使用我的 brew 安装版本 Python 3.9.5 在 macOS 上创建新的虚拟环境时出现此错误。 (mkvirtualenv
与 virtualenvwrapper
)
我的命令格式通常是:
mkvirtualenv -p python3 [env-name]
不确定是什么导致它搞砸了,但最终我通过 运行ning 让它再次工作:
python3.9 -m venv ~/.virtualenvs/myenvname
这会将 env 放在您的正常位置,您仍然可以 运行 workon myenvname