簡體   English   中英

運行setup.py腳本時pbr中的NoneType錯誤

[英]NoneType error in pbr when running setup.py script

當運行“ python setup.py development”或“ python setup.py install”時,我收到以下回溯。

Traceback (most recent call last):
  File "setup.py", line 38, in <module>
    test_suite='nose.collector',
  File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()
  File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/setuptools/command/develop.py", line 27, in run
    self.install_for_development()
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/setuptools/command/develop.py", line 129, in install_for_development
    self.process_distribution(None, self.dist, not self.no_deps)
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 682, in process_distribution
    [requirement], self.local_index, self.easy_install
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/pkg_resources.py", line 631, in resolve
    dist = best[req.key] = env.best_match(req, ws, installer)
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/pkg_resources.py", line 871, in best_match
    return self.obtain(req, installer)
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/pkg_resources.py", line 883, in obtain
    return installer(requirement)
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 595, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 627, in install_item
    self.process_distribution(spec, dist, deps)
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 659, in process_distribution
    self.install_egg_scripts(dist)
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/setuptools/command/develop.py", line 152, in install_egg_scripts
    return easy_install.install_egg_scripts(self,dist)
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 532, in install_egg_scripts
    self.install_wrapper_scripts(dist)
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 734, in install_wrapper_scripts
    for args in get_script_args(dist):
  File "/local/home/kassan1/venvs/some_env/local/lib/python2.7/site-packages/pbr/packaging.py", line 512, in override_get_script_args
    header = easy_install.get_script_header("", executable, is_wininst)
AttributeError: 'NoneType' object has no attribute 'get_script_header'

有趣的是,如果我重新運行與上述相同的命令,則安裝成功。

只是踢一下,我嘗試在導入和使用easy_install時將調試語句添加到pbr / packaging.py文件中。 導入時看起來還不錯,但是根據追溯在第512行訪問時為None。

以下是我正在使用的需求文件:

pyyaml                                                                                                                                                                                                                                                                 
requests
termcolor
mock
nose
cached_property
argparse
unittest2
tox
stevedore
kombu

和setup.py腳本:

import ez_setup                                                                                                                                                                                                                                                        
ez_setup.use_setuptools('3.6')

import os

from setuptools import setup, find_packages

try:
    # workaround for http://bugs.python.org/issue15881
    import multiprocessing  # noqa
except ImportError:
    pass


def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()


def requirements():
    return read('requirements.txt').splitlines()


setup(
    name='MY_PROJECT',
    version='0.0.1',
    author="Noorez Kassam",
    long_description=read('README.rst'),
    install_requires=requirements(),
    entry_points={
        'console_scripts': [
            'myproj = myproj.myproj:main',
        ],
        'myproj.urloperations.download': [
            'file = myproj.filedownload:download'
        ],
    },  
    packages=find_packages(),
    test_suite='nose.collector',
)

在Google上進行的快速搜索表明其他人遇到了我所看到的變化,但是,我無法找到解決問題的方法。

我有一個非常類似的問題,找到了解決方法。

我也得到了AttributeError: 'NoneType' object has no attribute 'get_script_header'

解決該問題的方法:在列表install_requires中,“ luigi”之前有“ tornado”。 通過將順序切換為“ luigi”然后是“ tornado”,此錯誤消失了。 我看到您不使用龍卷風或luigi,但我想排序仍然是此問題的原因,因為您可以通過運行兩次安裝命令來解決此問題。

附加說明:在找到此解決方法之前,我嘗試升級到最新的setuptools(v 5.8)。 它沒有解決錯誤。

我遇到了同樣的問題,並且通過更新setuptools版本(例如:

pip install --upgrade setuptools

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM