使用--prefix时,python-daemon安装失败

时间:2017-04-01 12:51:46

标签: python jenkins airflow

如果我执行:

pip install --install-option="--prefix=/root/folder" airflow==1.8.0

它将结束

    'dist_version': self.distribution.get_version(),
  File "version.py", line 656, in get_version
    version_info = self.get_version_info()
  File "version.py", line 651, in get_version_info
    changelog_path = get_changelog_path(self)
  File "version.py", line 552, in get_changelog_path
    setup_dirname = os.path.dirname(distribution.script_name)
  File "/usr/lib64/python2.7/posixpath.py", line 129, in dirname
    i = p.rfind('/') + 1
AttributeError: 'NoneType' object has no attribute 'rfind'

如果我执行

 pip install airflow==1.8.0

它将完成整个过程而没有错误。

# pip freeze 
airflow==1.8.0
alembic==0.8.10
backports.ssl-match-hostname==3.4.0.2
chardet==2.2.1
click==6.7
croniter==0.3.16
dill==0.2.6
docutils==0.13.1
Flask==0.11.1
Flask-Admin==1.4.1
Flask-Cache==0.13.1
Flask-Login==0.2.11
flask-swagger==0.2.13
Flask-WTF==0.12
funcsigs==1.0.0
future==0.15.2
gitdb2==2.0.0
GitPython==2.1.3
gunicorn==19.3.0
iniparse==0.4
itsdangerous==0.24
Jinja2==2.8.1
kitchen==1.1.1
lockfile==0.12.2
lxml==3.7.3
Mako==1.0.6
Markdown==2.6.8
MarkupSafe==1.0
numpy==1.12.1
ordereddict==1.1
pandas==0.19.2
psutil==4.4.2
pycurl==7.19.0
Pygments==2.2.0
pygobject==3.14.0
pygpgme==0.3
pyliblzma==0.5.3
python-daemon==2.1.2
python-dateutil==2.6.0
python-editor==1.0.3
python-nvd3==0.14.2
python-slugify==1.1.4
pytz==2017.2
pyxattr==0.5.1
PyYAML==3.12
requests==2.13.0
setproctitle==1.1.10
six==1.10.0
smmap2==2.0.1
SQLAlchemy==1.1.8
tabulate==0.7.7
thrift==0.9.3
Unidecode==0.4.20
urlgrabber==3.10
Werkzeug==0.12.1
WTForms==2.1
yum-metadata-parser==1.1.4
zope.deprecation==4.2.0

由于这必须遇到jenkins构建过程,我不能省略安装选项。任何强大的python用户都可以帮助我理解在哪里看到以及如何解决它?

我读过你需要先安装这个库(python-daemon),但仍然无法使用安装选项:

pip install --install-option="--prefix=/root/folder" python-daemon 

/usr/lib/python2.7/site-packages/pip/commands/install.py:188: UserWarning: Disabling all use of wheels due to the use of --build-options / --global-options / --install-options.
      File "/usr/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 230, in finalize_options
        'dist_version': self.distribution.get_version(),
      File "version.py", line 656, in get_version
        version_info = self.get_version_info()
      File "version.py", line 651, in get_version_info
        changelog_path = get_changelog_path(self)
      File "version.py", line 552, in get_changelog_path
        setup_dirname = os.path.dirname(distribution.script_name)
      File "/usr/lib64/python2.7/posixpath.py", line 129, in dirname
        i = p.rfind('/') + 1
    AttributeError: 'NoneType' object has no attribute 'rfind'

提前感谢。

2 个答案:

答案 0 :(得分:5)

python-daemon需要docutils。

pip install docutils

在那之后

pip install python-daemon

答案 1 :(得分:0)

我找到了一种让它运转的方法,而不是最好的而不是最终的解决方案,但它正在发挥作用:

 pip install python-daemon 

完成后,您应该可以将其看到

列表中
[root@localhost ozw1z5rd]# pip freeze | grep daemon 
python-daemon==2.1.2 

现在卸载它

 pip uninstall python-daemon 

当然它将无法再列入

列表
[root@localhost ozw1z5rd]# pip freeze | grep daemon 

现在使用前缀

再次安装
 pip install --install-option="--prefix=/root/folder" python-daemon 

这个安装,当然,它在pip冻结列表中不可用,但它完成时没有错误,并且在新路径中库确实存在。

[root@localhost ozw1z5rd]# ls /root/folder/lib/python2.7/site-packages/
daemon/                             python_daemon-2.1.2-py2.7.egg-info/ 

所有这些让我可以使用Jenkins安装气流。

我还调查了python-daemon的setup.py脚本,attrs ['script_name']在代码的早期部分正确加载,但后来丢失了。

enter image description here

在此屏幕中,显示的代码是attrs ['script_name']迷失的地方。