Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
升级python包时使用--prefix_Python_Installation_Pip - Fatal编程技术网

升级python包时使用--prefix

升级python包时使用--prefix,python,installation,pip,Python,Installation,Pip,setup.py的-prefix选项和pip via-install选项似乎已损坏 我需要在没有sudo访问权限的机器上维护更新的python包的共享存储库。理论上,setup.py的-prefix选项和pip-via-install选项可以满足我的需要 但是,如果系统目录中已经有我正在安装的包的版本,我将无法在我的私有存储库中安装它。不使用-upgrade安装失败,因为系统中已存在程序包;使用-upgrade安装失败,因为无法删除旧的程序包版本。这显示在下面的错误消息中 有没有办法阻止inst

setup.py的-prefix选项和pip via-install选项似乎已损坏

我需要在没有sudo访问权限的机器上维护更新的python包的共享存储库。理论上,setup.py的-prefix选项和pip-via-install选项可以满足我的需要

但是,如果系统目录中已经有我正在安装的包的版本,我将无法在我的私有存储库中安装它。不使用-upgrade安装失败,因为系统中已存在程序包;使用-upgrade安装失败,因为无法删除旧的程序包版本。这显示在下面的错误消息中

有没有办法阻止install尝试删除包的旧版本?或者,更可能的是,我只是不明白这是怎么回事

$ pip --version
pip 1.5.6 from /python-local/lib/python2.7/site-packages (python 2.7)

$ pip install  -U --install-option="--prefix=/python-local" virtualenv
Downloading/unpacking virtualenv from https://pypi.python.org/packages/py2.py3/v/virtualenv/virtualenv-1.11.6-py2.py3-none-any.whl#md5=c2aa2fc4986967815f8cb3a3418e6031
  Downloading virtualenv-1.11.6-py2.py3-none-any.whl (1.6MB): 1.6MB downloaded
Installing collected packages: virtualenv
  Found existing installation: virtualenv 1.7.1.2
    Uninstalling virtualenv:
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/python-local/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/python-local/lib/python2.7/site-packages/pip/commands/install.py", line 283, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "/python-local/lib/python2.7/site-packages/pip/req.py", line 1431, in install
    requirement.uninstall(auto_confirm=True)
  File "/python-local/lib/python2.7/site-packages/pip/req.py", line 598, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/python-local/lib/python2.7/site-packages/pip/req.py", line 1836, in remove
    renames(path, new_path)
  File "/python-local/lib/python2.7/site-packages/pip/util.py", line 295, in renames
    shutil.move(old, new)
  File "/usr/lib/python2.7/shutil.py", line 300, in move
    os.unlink(src)
OSError: [Errno 13] Permission denied: '/usr/bin/virtualenv'

Storing debug log for failure in /home/user/.pip/pip.log

答案是使用pip的-ignore安装选项。只要当前环境中可以看到正在安装的包的只读版本,就必须使用此选项。这包括使用-user、-local或-prefix时,以及安装到使用-system站点包创建的virtualenv中时

您可以在本节末尾找到此选项 或使用pip安装-帮助