2017-12-21 30 views
0

setup.py은 종종 외장 파일에 따라 달라지며, 특히 long_description의 경우 README.md이고 의 경우 VERSION 일 수 있습니다. 예 :복사 setup.py Tox와의 종속성

ERROR: invocation failed (exit code 1), logfile: 
.tox/py36/log/py36-6.log 
ERROR: actionid: py36 
msg: installpkg 
cmdargs: 
['.tox/py36/bin/pip', 'install', '-U', '--no-deps', '.tox/dist/package-0.1.0.zip'] 

Processing ./.tox/dist/package-0.1.0.zip 
    Complete output from command python setup.py egg_info: 
    Traceback (most recent call last): 
     File "<string>", line 1, in <module> 
     File "setup.py", line 10, in <module> 
     version   = open(os.path.join(root, 'VERSION')).read().strip(), 
    FileNotFoundError: [Errno 2] No such file or directory: 'VERSION' 

(또는 README.md와 유사한 메시지) : 같은 패키지에 tox와 테스트를 실행하려고 할 때

root = os.path.dirname(os.path.abspath(__file__)) 
setuptools.setup(
    name    = 'package', 
    version   = open(os.path.join(root, 'VERSION')).read().strip(), 
    description  = 'A Simple Package', 
    long_description = open(os.path.join(root, 'README.md')).read().strip(), 
    # ... 
) 

그러나, 나는 다음과 같은 오류가 발생합니다. 분명히 toxsetup.py 만 복사하고 실행하려고하면 해당 종속성이 누락되어 작동하지 않습니다.

문서를 검토했지만이 파일을 복사하는 방법을 찾을 수 없습니다. tox 그것을 할 수있는 방법이 있습니까?

편집

여기 내 디렉토리 구조와 관련 파일의이 :

+0

기본적으로'tox'는'tox.ini' (그러므로 당신의 README와 VERSION)이있는 디렉토리와 똑같은 디렉토리에서 실행되기 때문에 문제가 없어야합니다. '독극물 (tox.ini)'을 볼 수 있을까요? – phd

답변

0

이 밝혀졌습니다. (내가 상대 경로를, 예를 들어 open('README.md') 사용하는 경우 같은 일이 발생) 그것은 아니다

$ ls 
package/ tests/ README.md VERSION setup.py tox.ini 

$ cat tox.ini 
[tox] 
envlist = py36 
[testenv] 
deps  = pytest 
commands = pytest tests 

$ cat setup.py 
import os 
import setuptools 
root = os.path.dirname(os.path.abspath(__file__)) 
setuptools.setup(
    name    = 'package', 
    version   = open(os.path.join(root, 'VERSION')).read().strip(), 
    description  = 'A Simple Package', 
    long_description = open(os.path.join(root, 'README.md')).read().strip(), 
    packages   = setuptools.find_packages(), 
) 

tox 문제이지만, setuptools 하나 (또는 ​​올바르게 사용하지 않음). 나는 다른 누군가가 앞으로 비슷한 문제를 겪을 때를 대비하여 여기에 답변을 게시하고 있습니다.

tox은 소스 배포판 (예 : python setup.py sdist)을 생성 한 다음 가상 환경에 설치 한 다음 테스트를 실행합니다. setuptools에 기본적으로 비표준 파일이 포함되어 있지 않으므로 VERSION 및 개의 파일이 누락되었습니다.이 배포판에는 파일이 있습니다. 재치하려면

# create a source distribution 
$ python setup.py sdist 

# extract it 
$ cd dist/ 
$ tar xfz package-0.1.0.tar.gz 

# check it out 
$ ls package-0.1.0 
package package.egg-info PKG-INFO setup.cfg setup.py 

# no VERSION or README.md :(

표준이 아닌 파일을 포함하려면이 같은 MANIFEST.in 파일을 추가 :

include VERSION 
include README.md 

분포에서 이러한 파일을 포함 setuptools를 알려줍니다, 예상대로 tox 일을 만든다.