pip冻结/ - 要求重新安装bin脚本或只有鸡蛋吗?

时间:2015-04-13 18:22:55

标签: python pip bin egg

在我们拥有的Linux计算集群环境中,我们之前将在集群头节点上的/ opt下安装不同版本的python,并将/ etc / exports配置为NFS导出/opt/pythonX.Y到计算节点用于从头节点安装。但是,我们最近迁移到安装在整个群集上的SAN上更具弹性的存储位置。例如,我们将/opt/python2.7和/opt/python3.3从headnode发送到已安装SAN上的新路径,但问题是他们的bin /子目录下的许多* .py文件仍然有一个shebang指向旧的/ opt路径,从而将其视为依赖。

我认为在SAN上新安装python会很容易,而不是通过< pip freeze>转储/ opt python安装中的当前软件包。 packagelist.txt'然后用'pip -r packagelist.txt'重新安装,但是它做的是安装所有的鸡蛋(预期),但几乎没有相应的bin脚本(意外)。当用户开始抱怨当他们的.bashrc指向运行python的新SAN路径时,他们开始抱怨他们使用许多* .py bin / script的bash脚本时,我很快就发现了这一点,这主要是因为所有* .py脚本(都是在/ opt安装路径下)不在SAN的pythonX.Y / bin /下,尽管相应的鸡蛋都安装在site-packages目录下。

我一直在尝试理解鸡蛋和脚本之间关于安装和目录(输出)位置的关系,我追踪到setup.py必须有一个' scripts ='在SE问题中提到的setup()函数中指定的参数:setup.py and adding file to /bin/

我是一名非开发人员,甚至不在python中编码,但是有人可以帮助我理解为什么一个pip"重新安装"使用freeze / -r(--requirement)将鸡蛋安装到site-packages /而不是脚本bin /?如果他们没有来自同一个包装或安装,那么他们来自哪里?如果您需要更多细节,请告诉我。

1 个答案:

答案 0 :(得分:0)

可能是您已经通过python的分发配置文件。特别是pydistutils.cfg:

https://docs.python.org/2/install/#location-and-names-of-config-files

为了澄清,脚本是指通常放在PATH上的python程序,而#34; egg"或者以其他方式引用python程序中使用的python模块和库。

在pydistutils.cfg中应该有一个" install_scripts"的设置。或" script_dir"。如果是这种情况,我还是会指着你的老python脚本目录。