>

python setup.py 테스트, python setup.py 빌드 또는 python setup.py --help-commands를 실행할 때 "OSError : [Errno 2] 해당 파일 또는 디렉토리가 없습니다"라는 메시지가 표시됩니다.

지금까지 setuptools (현재 버전 41.0.1을 실행 중)를 업그레이드하려고 시도했지만 문제가 해결되지 않았습니다.

내 익명의 setup.py는 다음과 같습니다 :

from setuptools import setup, find_packages

def read_version():
    with open('version') as ver:
        return ver.read().strip()

config = {
    'description': 'package',
    'author': 'Me',
    'author_email': '[email protected]',
    'version': read_version(),
    'packages': find_packages(),
    'package_data': {
        'manager.resources': ['*.yaml'],
    },
    'scripts': [],
    'name': 'company.packagename',
    'namespace_packages': ['company'],
    'test_suite': 'tests',
    'entry_points': {
        'console_scripts': [
            'launcher = manager_launcher:main',
            'managerschemas = manager.validation:export',
            'managertypes = manager.types:export',
        ]
    },
    'setup_requires': ['pytest-runner'],
    'tests_require': [
        'flake8',
        'pylint',
        'pytest',
        'pytest-cov',
        'pytest-mock',
    ],
}
if __name__ == '__main__':
    setup(**config)


setup.cfg는 다음과 같습니다 :

[aliases]
test = pytest
[flake8]
max-line-length = 120
exclude = venv,.eggs
[tool:pytest]
addopts = -vvvv --cov=manager --cov-branch --cov-fail-under=100 --cov-report=term --cov-report=html --junitxml=junit.xml
testpaths = tests

내가받는 역 추적은 :

Traceback (most recent call last):
  File "setup.py", line 40, in <module>
    setup(**config)
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/__init__.py", line 144, in setup
    _install_setup_requires(attrs)
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/__init__.py", line 139, in _install_setup_requires
    dist.fetch_build_eggs(dist.setup_requires)
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/dist.py", line 717, in fetch_build_eggs
    replace_conflicting=True,
  File "/home/vagrant/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 782, in resolve
    replace_conflicting=replace_conflicting
  File "/home/vagrant/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1065, in best_match
    return self.obtain(req, installer)
  File "/home/vagrant/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1077, in obtain
    return installer(requirement)
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/dist.py", line 784, in fetch_build_egg
    return cmd.easy_install(req)
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 679, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 705, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 855, in install_eggs
    return [self.install_wheel(dist_filename, tmpdir)]
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1073, in install_wheel
    os.path.dirname(destination)
  File "/usr/lib/python2.7/distutils/cmd.py", line 349, in execute
    util.execute(func, args, msg, dry_run=self.dry_run)
  File "/usr/lib/python2.7/distutils/util.py", line 309, in execute
    func(*args)
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/wheel.py", line 101, in install_as_egg
    self._install_as_egg(destination_eggdir, zf)
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/wheel.py", line 109, in _install_as_egg
    self._convert_metadata(zf, destination_eggdir, dist_info, egg_info)
  File "/home/vagrant/.local/lib/python2.7/site-packages/setuptools/wheel.py", line 157, in _convert_metadata
    os.path.join(egg_info, 'PKG-INFO'),
OSError: [Errno 2] No such file or directory

  • 답변 # 1

    Vagrant/Virtualbox의 동기화 된 폴더 지연으로 인해이 문제가 발생한 것으로 나타났습니다. 동기화 된 폴더를 사용하여 호스트 파일 시스템에서 공유되는 Vagrant VM 내에 Python 프로젝트를 빌드하려고했습니다. 동기화 된 폴더에서 프로젝트를 VM의 다른 폴더로 복사하면 빌드 할 수 있습니다. 작동하는 또 다른 더러운 해킹은 OS 예외를 발생시키는 os.rename 전에 157 행의 setuptools/wheel.py 소스 파일에 time.sleep (1)을 추가하는 것입니다. 이렇게하면 파일 시스템이 동기화 될 수 있으므로 문제를 해결할 수 있습니다.

  • 이전 c - cmake 명령 행 옵션
  • 다음 aws lambda - Amazon Cognito의 Hasura Webhook 인증