【发布时间】:2023-06-22 17:25:01
【问题描述】:
我想找出一个“万无一失”的安装说明放入 Python 项目的 README 中,命名为 footools,以便我们组中的其他人可以在他们的上安装最新的 SVN 版本笔记本电脑及其服务器帐户。
问题是当 Python 调用 pip 安装的脚本时,让用户安装的库被 Python 使用。例如,我们使用的服务器在/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ 中有旧版本的footools。
如果我执行python2.7 setup.py install --user 并运行主入口脚本,它将使用/Users/unhammer/Library/Python/2.7/lib/python/site-packages/ 中的文件。这是我想要的,但是 setup.py 单独不会安装依赖项。
如果我(恢复安装并)改为执行pip-2.7 install --user . 并运行主入口脚本,它会使用/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ 中的旧文件——这不是我想要的。
如果我(恢复安装并且)改为执行pip-2.7 install --user -e . 并运行主入口脚本,它会使用. 中的文件——这不是我想要的,用户应该能够删除源目录(并且能够在不影响其安装的情况下进行 svn。
我可以使用(并推荐其他人使用)python2.7 setup.py install --user——但他们必须先这样做
pip-2.7 install -U --user -r requirements.txt -e .
pip-2.7 uninstall -y footools
为了安装依赖项(因为 pip 没有install --only-deps 选项)。不过,这相当冗长。
setup.py 在做什么,而 pip 在这里没有做什么?
(经过编辑以明确说明我正在寻找更简单+更安全的安装说明。)
【问题讨论】:
-
可以用 virtualenv 吗?
-
能否提供您使用的 setuptools 和 pip 版本?另外,当您使用 setuptools 安装和使用 pip 安装时,入口脚本的外观如何?可以在每次安装后运行
python -m site和python -c "import os; print os.environ.get('PYTHONPATH')"并报告结果吗? -
Piotr,在github.com/pypa/pip/issues/536 上有一个关于它的大讨论——对于我自己的情况,我不再需要解决这个问题,但我建议任何人都去看看这个问题。
-
您是说您的footools 与系统中已安装的版本相同吗?在您的问题中,您说 If I (revert the installation and) 而是执行 pip-2.7 install --user 。并运行主入口脚本 (...)。如果根据问题 536 您的命令
pip-2.7 install --user .应该是空操作(如果您的版本与系统版本相同),那么您如何能够运行 main entry script 所以不应该有任何控制台脚本安装在用户安装方案的bin目录中? -
如果我没记错的话,问题是已经安装的包的版本号与 SVN 中的相同,所以 pip 没有覆盖。通过“恢复安装”,我想我指的是 ~/.local/site-python-whatever-it's-所谓的库,而不是 ~/bin 加载器。
标签: python pip setup.py sys.path