Python virtualenv在错误的位置查找以便于安装和维护;其他文件
不知怎的,我在mac上搞砸了python 2.7的安装,所以我尝试用“brew安装python”重新安装。现在,当我尝试创建一个新的virtualenv时,它抛出了一个关于找不到/bin/easy\u install的错误。easy_安装实际上位于/usr/local/bin/easy_安装中。如果我将其符号链接到/bin,virtualenv将以/bin/pip失败,依此类推-它查找的每个文件实际上都在/usr/local/bin而不是/bin 如何永久性地使virtualenv位于正确的位置:/usr/local/binPython virtualenv在错误的位置查找以便于安装和维护;其他文件,python,python-2.7,pip,virtualenv,easy-install,Python,Python 2.7,Pip,Virtualenv,Easy Install,不知怎的,我在mac上搞砸了python 2.7的安装,所以我尝试用“brew安装python”重新安装。现在,当我尝试创建一个新的virtualenv时,它抛出了一个关于找不到/bin/easy\u install的错误。easy_安装实际上位于/usr/local/bin/easy_安装中。如果我将其符号链接到/bin,virtualenv将以/bin/pip失败,依此类推-它查找的每个文件实际上都在/usr/local/bin而不是/bin 如何永久性地使virtualenv位于正确的位置
$ virtualenv env
New python executable in /Users/myusername/code/lambda/env/bin/python2.7
Also creating executable in /Users/myusername/code/lambda/env/bin/python
Installing setuptools, pip, wheel...
Complete output from command /Users/myusername/c...da/env/bin/python2.7 -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip wheel:
Ignoring indexes: https://pypi.python.org/simple
Collecting setuptools
Collecting pip
Collecting wheel
Installing collected packages: setuptools, pip, wheel
Exception:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/virtualenv_support/pip-7.1.2-py2.py3-none-any.whl/pip/basecommand.py", line 211, in main
status = self.run(options, args)
File "/usr/local/lib/python2.7/site-packages/virtualenv_support/pip-7.1.2-py2.py3-none-any.whl/pip/commands/install.py", line 311, in run
root=options.root_path,
File "/usr/local/lib/python2.7/site-packages/virtualenv_support/pip-7.1.2-py2.py3-none-any.whl/pip/req/req_set.py", line 646, in install
**kwargs
File "/usr/local/lib/python2.7/site-packages/virtualenv_support/pip-7.1.2-py2.py3-none-any.whl/pip/req/req_install.py", line 803, in install
self.move_wheel_files(self.source_dir, root=root)
File "/usr/local/lib/python2.7/site-packages/virtualenv_support/pip-7.1.2-py2.py3-none-any.whl/pip/req/req_install.py", line 998, in move_wheel_files
isolated=self.isolated,
File "/usr/local/lib/python2.7/site-packages/virtualenv_support/pip-7.1.2-py2.py3-none-any.whl/pip/wheel.py", line 465, in move_wheel_files
generated.extend(maker.make(spec))
File "/usr/local/lib/python2.7/site-packages/virtualenv_support/pip-7.1.2-py2.py3-none-any.whl/pip/_vendor/distlib/scripts.py", line 353, in make
self._make_script(entry, filenames, options=options)
File "/usr/local/lib/python2.7/site-packages/virtualenv_support/pip-7.1.2-py2.py3-none-any.whl/pip/_vendor/distlib/scripts.py", line 257, in _make_script
self._write_script(scriptnames, shebang, script, filenames, ext)
File "/usr/local/lib/python2.7/site-packages/virtualenv_support/pip-7.1.2-py2.py3-none-any.whl/pip/_vendor/distlib/scripts.py", line 231, in _write_script
self._fileop.write_binary_file(outname, script_bytes)
File "/usr/local/lib/python2.7/site-packages/virtualenv_support/pip-7.1.2-py2.py3-none-any.whl/pip/_vendor/distlib/util.py", line 388, in write_binary_file
with open(path, 'wb') as f:
IOError: [Errno 13] Permission denied: '/bin/easy_install'
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
File "/usr/local/bin/virtualenv", line 9, in <module>
load_entry_point('virtualenv==13.2.0.dev0', 'console_scripts', 'virtualenv')()
File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 699, in main
symlink=options.symlink)
File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 872, in create_environment
install_wheel(to_install, py_executable, search_dirs)
File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 837, in install_wheel
'PIP_USER': '0'
File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 777, in call_subprocess
% (cmd_desc, proc.returncode))
OSError: Command /Users/myusername/c...da/env/bin/python2.7 -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip wheel failed with error code 2
但它应该在/usr/local/bin中查找,因为这是我现在唯一的简单安装,并且它可以工作:
$ which easy_install
/usr/local/bin/easy_install
$ easy_install
install_dir /usr/local/lib/python2.7/site-packages/
error: No urls, filenames, or requirements specified (see --help)
我曾经尝试过pip卸载virtualenv,然后pip安装virtualenv,但没有帮助-同样的问题
有人知道怎么解决这个问题吗
谢谢
====================
编辑:解决了!
尝试使用/usr/local/bin/virtualenv-2.7,效果如预期。我移动了/usr/local/bin/virtualenv,然后将/usr/local/bin/virtualenv-2.7符号链接回/usr/local/bin/virtualenv--现在看来世界上一切都很好。解决了!尝试使用/usr/local/bin/virtualenv-2.7,效果如预期。我移动了/usr/local/bin/virtualenv,然后将/usr/local/bin/virtualenv-2.7符号链接回/usr/local/bin/virtualenv--现在看来世界上一切都很好。我编译了自己的Python 3,然后安装了virtualenvwrapper。但在我从编译自己的Python转换到使用Python之后,我遇到了上述问题中描述的问题 好像是
出了什么事代码>virtualenv脚本的一部分
我得到的错误如下:
nb@ubuntu-0xA520322HC30H:~/proj/redis-py$ mkvirtualenv --python='/usr/bin/python3' redispytest
bash: /home/nb/.local/bin/virtualenv: /usr/local/bin/python3.6: bad interpreter: No such file or directory
我的系统Python设置具有以下符号链接和Python位置:
nb@ubuntu-0xA520322HC30H:~/proj/redis-py$ ls -la /usr/bin/python3
lrwxrwxrwx 1 root root 9 Feb 8 11:43 /usr/bin/python3 -> python3.5
nb@ubuntu-0xA520322HC30H:~/proj/redis-py$ ls -la /usr/bin/python3.5
-rwxr-xr-x 2 root root 4464400 Nov 28 08:53 /usr/bin/python3.5
nb@ubuntu-0xA520322HC30H:~/proj/redis-py$ which python3.5
/usr/bin/python3.5
nb@ubuntu-0xA520322HC30H:~/proj/redis-py$ ls -la /usr/bin/python3.5
-rwxr-xr-x 2 root root 4464400 Nov 28 08:53 /usr/bin/python3.5
nb@ubuntu-0xA520322HC30H:~/proj/redis-py$ ls -la /usr/bin/python3.6
-rwxr-xr-x 2 root root 4695328 Jan 28 10:49 /usr/bin/python3.6
nb@ubuntu-0xA520322HC30H:~/proj/redis-py$ which virtualenv
/home/nb/.local/bin//virtualenv
在/home/nb/.local/bin/imk_中:
nb@ubuntu-0xA520322HC30H:~/proj/redis-py$ cd ~/.local/bin
nb@ubuntu-0xA520322HC30H:~/.local/bin$ ls
pbr pip2 pip3 virtualenv virtualenvwrapper_lazy.sh
pip pip2.7 pip3.5 virtualenv-clone virtualenvwrapper.sh
我想知道代码中这个神秘而又完全不存在的/usr/local/bin/python3.6在哪里
所以我安装了一个全文搜索工具,并在~/.local文件夹中查找它
nb@ubuntu-0xA520322HC30H:~$ cd .local
nb@ubuntu-0xA520322HC30H:~/.local$ sudo apt-get install --quiet --quiet silversearcher-ag
nb@ubuntu-0xA520322HC30H:~/.local$ ag '/usr/local/bin/python3.6'
bin/virtualenv-clone
1:#!/usr/local/bin/python3.6
bin/pbr
1:#!/usr/local/bin/python3.6
看起来有两处是对Python的静态引用
我现在有两个选择:
我可以编辑其中的/usr/local/bin/python3.6文本,以参考/usr/bin/python3.6
我可以从/usr/local/bin/python3.6
->/usr/bin/python3.6
对于bin/virtualenv克隆
文件,我选择了选项1:
但我也做了选择2,以防这个问题在我的系统的其他地方存在
nb@ubuntu-0xA520322HC30H:~$ sudo ln -s /usr/bin/python3.6 /usr/local/bin/python3.6
好吧,不管是什么,这都奏效了:
nb@ubuntu-0xA520322HC30H:~/.local$ mkvirtualenv --python='/usr/bin/python3' redispytest
Running virtualenv with interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/nb/Envs/redispytest/bin/python3
Also creating executable in /home/nb/Envs/redispytest/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /home/nb/Envs/redispytest/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/nb/Envs/redispytest/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/nb/Envs/redispytest/bin/preactivate
virtualenvwrapper.user_scripts creating /home/nb/Envs/redispytest/bin/postactivate
virtualenvwrapper.user_scripts creating /home/nb/Envs/redispytest/bin/get_env_details
(redispytest) nb@ubuntu-0xA520322HC30H:~/.local$
总结:找出您的virtualenv尝试使用的解释器位置,并将该位置与实际Python进行符号链接
您需要这样做的原因是,至少有几个virtualenv位置将有一个#代码>行,该行引用特定位置,但如果您从编译自己的Python切换到使用PPA,则不会更改
起初,我对这样做犹豫不决,因为我更喜欢让包管理器处理这类事情,而不是让我的路径太复杂。但似乎真的没有其他方法来解决这个问题。我尝试卸载并重新安装了virtualenv
和virtualenvwrapper
,但没有成功
嗯嗯。。。在my.local/bin中有pbr
。下一步是什么,我的本地/冰箱?该死的时髦人士。/,这可能是吹毛求疵,但我认为这样一个好问题应该有一个更具疑问的标题。这样其他像我这样迷路的人会更快地找到它。您能否将标题更改为“如何使virtualenv在Python中始终处于正确的位置:/usr/local/bin?”
nb@ubuntu-0xA520322HC30H:~/.local$ mkvirtualenv --python='/usr/bin/python3' redispytest
Running virtualenv with interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/nb/Envs/redispytest/bin/python3
Also creating executable in /home/nb/Envs/redispytest/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /home/nb/Envs/redispytest/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/nb/Envs/redispytest/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/nb/Envs/redispytest/bin/preactivate
virtualenvwrapper.user_scripts creating /home/nb/Envs/redispytest/bin/postactivate
virtualenvwrapper.user_scripts creating /home/nb/Envs/redispytest/bin/get_env_details
(redispytest) nb@ubuntu-0xA520322HC30H:~/.local$