python-3.x - python3 venv中的PIP安装失败,/tmp文件夹中的权限被拒绝 - IT工具网


本站和网页 https://www.coder.work/article/7229413 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

python-3.x - python3 venv中的PIP安装失败,/tmp文件夹中的权限被拒绝 - IT工具网
首页
程序开发
写作辅助
多媒体
实用工具
博客
python-3.x - python3 venv中的PIP安装失败,/tmp文件夹中的权限被拒绝
标签
python-3.x
pip
virtualenv
似乎有几种方法可以解决相同的错误,我描述的是最典型的。我在没有 sudo 权限的共享托管服务器上编译了 python 3.6.2(尽管它在 cgi-bin 中运行良好)。后来我发现它也发生在 Ubuntu 16.04 上。我想:my-python3-path/bin/python3 -m venv my-venv-folder
这最终失败了
Error: Command '['...my-venv-folder/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
我可以尝试另一种方式:my-python3-path/bin/python3 -m venv --without-pip my-venv-folder
哪个成功,然后my-venv-folder/bin/python -m ensurepip
(或以上结果建议的更多选项) - 它无论如何都以:
OSError: [Errno 22] Invalid argument: '/tmp/tmpt2cathtr'
有 pip 高于以以下结尾的堆栈跟踪:
PermissionError: [Errno 13] Permission denied: '/tmp/pip-build-exot00s_'
尽管通过这种方式,所有必要的脚本(例如激活)都是在 pip 之前在 venv 中创建的,并且 pip 文件本身似乎存在并且可以工作,直到我真正尝试安装任何东西。那么类似的错误存在。换 TMPDIR似乎没有帮助 - 使用了相同的/tmp 文件夹。在 make install 中出现相同或类似的错误顺便一提...有问题的子文件夹(/tmp 中的子文件夹具有 d-w------- 访问权限,因此无法访问它们也就不足为奇了)。如果有人遇到此问题,请分享您是否找到解决方案来摆脱它(尽管目前状态最后一个变体看起来像解决方法),因为我未能通过 google 找到解决方案。对不起,如果描述不是很连贯,因为我不是一个 python 人,各种尝试和谷歌搜索让我有 pip 头晕。提前致谢! UPD : 临时目录似乎是用 rwx 创建的用户的权限,但后来模式变为 -w-和 rmtree失败。当前的解决方法似乎是注释掉 rmtree在这样的地方打电话(其中几个)......
最佳答案
我想我找到了一个有效的修复/解决方法。问题是由 /tmp/pip... 的奇怪变化引起的子目录的访问权限 - 它们最终成为“只写”,所以 rmtree在各个阶段被 pip 调用失败了。我的解决办法是:设置 venv没有 pip 手动从pypi下载pip包放到venv 修复 rmtree在 pip/utils 使用 pip 安装 setuptools 现在它正在工作(虽然应该通过 python 调用)这种方法的一个小缺陷是不会自动删除临时文件夹。我要么删除它们(首先递归地修改)或等待重启。详细来说是这样的:创建 virtualenv 并启动它:path-to-python3/bin/python3 -m venv my-venv --without-pip
source my-venv/bin/activate
让我们切换到应该安装 libs 的目录cd my-venv/lib/python3.6/site-packages
下载pip(从官方页面复制链接到.whl https://pypi.python.org/pypi/pip)wget https://pypi.python.org/packages/.../pip-9.0.1-py2.py3-none-any.whl
现在提取 pip从中删除目录并删除所有其他内容unzip pip-9.0.1...whl
rm *.whl
rm -r pip-9.0.1.dist-info
现在打开文件 pip/utils/__init__.py并更改 rmtree 函数的标题:nano pip/utils/__init__.py
找到行 def rmtree(dir, ignore_errors=False):并更改 False至 True .然后退出 Ctrl-X, Yes .为了正常工作 pip 想要安装工具,幸运的是我们现在可以用 pip 本身安装它们:python -m pip install setuptools
现在它已准备好用于管理我们需要的一切:python -m pip install django
python -m pip freeze
附言更聪明的方法是在 utils/rmtree 中递归地尝试 chown。
关于python-3.x - python3 venv中的PIP安装失败,/tmp文件夹中的权限被拒绝,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/46530900/
上一篇:Xamarin 样式优先顺序
下一篇:r - 在 Cube MDX 中使用 R,如何传递和检索数组?
相关文章:
python - 当多个 python 版本时,在 Windows 上 pip installwheel
python - 安装没有 Chameleon 的 Pyramid
python - 在没有pygame的情况下加载 Sprite (在乌龟中)
python-3.x - 我如何使用 python 从 flashscore 中抓取足球结果
Python pip 库搜索路径
Python virtualenv requirements.txt 默认包含 wheel
python - 当 requirements.txt 或 setup.py 改变时用 tox 重新安装 virtualenv
python - "pip3 install virtualenv"不执行任何操作
python - 在跳过第一行并使用第二行作为 pandas 中符号的原始刻度数据的标题时无法读取 csv
python - 得到最简化的分数
2023 IT工具网
联系我们