Python 的 'setup.py install' 的步骤 'build_py' 中的神秘错误
Cryptic error in step 'build_py' of Python's 'setup.py install'
在尝试安装我的 python 项目 adla
时,我收到了一个我无法理解的错误:
(devel)> $ cd $PROJECT_DIR
(devel)> $ pip3 -v install .
Processing [PROJECT_DIR]
Running setup.py [...] egg_info for package from file://[PROJECT_DIR]
Running command python setup.py egg_info
running egg_info
creating pip-egg-info/adla.egg-info
writing requirements to pip-egg-info/adla.egg-info/requires.txt
writing dependency_links to pip-egg-info/adla.egg-info/dependency_links.txt
writing entry points to pip-egg-info/adla.egg-info/entry_points.txt
writing pip-egg-info/adla.egg-info/PKG-INFO
writing top-level names to pip-egg-info/adla.egg-info/top_level.txt
writing manifest file 'pip-egg-info/adla.egg-info/SOURCES.txt'
warning: manifest_maker: standard file '-c' not found
reading manifest file 'pip-egg-info/adla.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'pip-egg-info/adla.egg-info/SOURCES.txt'
Source in [...] has version 0.8.4, which satisfies requirement adla==0.8.4 from file://[PROJECT_DIR]
Requirement already satisfied [...]
Could not parse version from link: file://[PROJECT_DIR]
Installing collected packages: adla
Running setup.py install for adla
Running command [...]/Environments/devel/bin/python3.5 -c [...]
running install
running build
running build_py
error: [Errno 2] No such file or directory: 'build/lib.macosx-10.11-x86_64-3.5/None'
UPDATING build/lib.macosx-10.11-x86_64-3.5/None
Complete output from command [...]Environments/devel/bin/python3.5 -c "import setuptools, tokenize;__file__='/var/folders/t2/kg3yygn93nd2s175mkdcx0sc0000gn/T/pip-cbqf77qe-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/t2/kg3yygn93nd2s175mkdcx0sc0000gn/T/pip-rtbxcavl-record/install-record.txt --single-version-externally-managed --compile --install-headers [...]/Environments/devel/bin/../include/site/python3.5/adla:
running install
running build
running build_py
error: [Errno 2] No such file or directory: 'build/lib.macosx-10.11-x86_64-3.5/None'
UPDATING build/lib.macosx-10.11-x86_64-3.5/None
----------------------------------------
[...]
(devel)> $
无论我使用的是什么机器,都会出现错误(在 OS X 10.11、Ubuntu Server 14.04 和虚拟机 运行ning Ubuntu 上试过电脑版 14.04)。我还尝试重新安装 Python 3.5、pip
和 setuptools
,但无济于事。如您所见,我在 virtualenv
中使用 Python 3.5,其中 pip (7.1.2)
和 setuptools (18.4)
.
该项目使用 versioneer
进行版本控制,并在扩展 adla.ml.dtw
中包含一个 numpy
通用 ufunc,它在发布 $ python3 setup.py build_ext
.
时构建良好
我的 setup.py
文件如下所示
...
build_requires = []
try:
import numpy
except ImportError:
build_requires = ["numpy >= 1.7.0"]
requirements = [
"bokeh",
"pymongo",
"characteristic",
"click",
"pandas",
"theano",
"scipy",
"scikit-learn"
]
setup(
name=DISTNAME,
author=AUTHOR,
author_email=EMAIL,
description=DESCRIPTION,
license=LICENSE,
url=URL,
download_url=DOWNLOAD_URL,
classifiers=CLASSIFIERS,
keywords=KEYWORDS,
long_description=LONG_DESCRIPTION,
version=versioneer.get_version(),
cmdclass=versioneer.get_cmdclass(),
platforms="any",
setup_requires=build_requires,
install_requires=build_requires + requirements,
entry_points={
"console_scripts": [
"adla = adla.loader:main",
"adlaml = adla.ml.loader:main"
]
},
packages=find_packages(where="src", exclude=("historical", "test", "specs")),
package_dir={"": "src"},
package_data={
"adla": ["src/adla/config.ini", "src/adla/specs/*.json"]
},
ext_modules=[
Extension(
"adla.ml.dtw",
["src/adla/ml/dtw.cpp"],
include_dirs=[resource_filename("numpy", "core/include")]
)
]
)
...
EDIT 有关更多信息,这里是 build_py
步骤 运行 本身的输出。
(devel)> $ python3 setup.py --verbose build_py
running build_py
creating build
creating build/lib.macosx-10.11-x86_64-3.5
creating build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/__init__.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/_version.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/analysis.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/commands.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/inspection.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/loader.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/modification.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/rbi.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/util.py -> build/lib.macosx-10.11-x86_64-3.5/adla
creating build/lib.macosx-10.11-x86_64-3.5/adla/ml
copying src/adla/ml/__init__.py -> build/lib.macosx-10.11-x86_64-3.5/adla/ml
copying src/adla/ml/loader.py -> build/lib.macosx-10.11-x86_64-3.5/adla/ml
copying src/adla/ml/meta_model.py -> build/lib.macosx-10.11-x86_64-3.5/adla/ml
copying src/adla/ml/models.py -> build/lib.macosx-10.11-x86_64-3.5/adla/ml
copying src/adla/ml/util.py -> build/lib.macosx-10.11-x86_64-3.5/adla/ml
UPDATING build/lib.macosx-10.11-x86_64-3.5/None
error: [Errno 2] No such file or directory: 'build/lib.macosx-10.11-x86_64-3.5/None'
不幸的是,我不明白为什么 setuptools
试图找到文件 build/[...]/None
。我将不胜感激对错误的一些洞察!
我刚刚自己解决了这个问题。 setup.cfg
中的版本控制变量 versionfile_build
被设置为 None
而不是正确的版本控制版本文件。 setup.cfg
中的正确设置供参考。
[versioneer]
VCS = git
style = pep440
versionfile_source = src/adla/_version.py
versionfile_build = adla/_version.py
tag_prefix =
parentdir_prefix = adla-
[pytest]
norecursedirs = .git .vagrant .eggs contrib puppet
在尝试安装我的 python 项目 adla
时,我收到了一个我无法理解的错误:
(devel)> $ cd $PROJECT_DIR
(devel)> $ pip3 -v install .
Processing [PROJECT_DIR]
Running setup.py [...] egg_info for package from file://[PROJECT_DIR]
Running command python setup.py egg_info
running egg_info
creating pip-egg-info/adla.egg-info
writing requirements to pip-egg-info/adla.egg-info/requires.txt
writing dependency_links to pip-egg-info/adla.egg-info/dependency_links.txt
writing entry points to pip-egg-info/adla.egg-info/entry_points.txt
writing pip-egg-info/adla.egg-info/PKG-INFO
writing top-level names to pip-egg-info/adla.egg-info/top_level.txt
writing manifest file 'pip-egg-info/adla.egg-info/SOURCES.txt'
warning: manifest_maker: standard file '-c' not found
reading manifest file 'pip-egg-info/adla.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'pip-egg-info/adla.egg-info/SOURCES.txt'
Source in [...] has version 0.8.4, which satisfies requirement adla==0.8.4 from file://[PROJECT_DIR]
Requirement already satisfied [...]
Could not parse version from link: file://[PROJECT_DIR]
Installing collected packages: adla
Running setup.py install for adla
Running command [...]/Environments/devel/bin/python3.5 -c [...]
running install
running build
running build_py
error: [Errno 2] No such file or directory: 'build/lib.macosx-10.11-x86_64-3.5/None'
UPDATING build/lib.macosx-10.11-x86_64-3.5/None
Complete output from command [...]Environments/devel/bin/python3.5 -c "import setuptools, tokenize;__file__='/var/folders/t2/kg3yygn93nd2s175mkdcx0sc0000gn/T/pip-cbqf77qe-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/t2/kg3yygn93nd2s175mkdcx0sc0000gn/T/pip-rtbxcavl-record/install-record.txt --single-version-externally-managed --compile --install-headers [...]/Environments/devel/bin/../include/site/python3.5/adla:
running install
running build
running build_py
error: [Errno 2] No such file or directory: 'build/lib.macosx-10.11-x86_64-3.5/None'
UPDATING build/lib.macosx-10.11-x86_64-3.5/None
----------------------------------------
[...]
(devel)> $
无论我使用的是什么机器,都会出现错误(在 OS X 10.11、Ubuntu Server 14.04 和虚拟机 运行ning Ubuntu 上试过电脑版 14.04)。我还尝试重新安装 Python 3.5、pip
和 setuptools
,但无济于事。如您所见,我在 virtualenv
中使用 Python 3.5,其中 pip (7.1.2)
和 setuptools (18.4)
.
该项目使用 versioneer
进行版本控制,并在扩展 adla.ml.dtw
中包含一个 numpy
通用 ufunc,它在发布 $ python3 setup.py build_ext
.
我的 setup.py
文件如下所示
...
build_requires = []
try:
import numpy
except ImportError:
build_requires = ["numpy >= 1.7.0"]
requirements = [
"bokeh",
"pymongo",
"characteristic",
"click",
"pandas",
"theano",
"scipy",
"scikit-learn"
]
setup(
name=DISTNAME,
author=AUTHOR,
author_email=EMAIL,
description=DESCRIPTION,
license=LICENSE,
url=URL,
download_url=DOWNLOAD_URL,
classifiers=CLASSIFIERS,
keywords=KEYWORDS,
long_description=LONG_DESCRIPTION,
version=versioneer.get_version(),
cmdclass=versioneer.get_cmdclass(),
platforms="any",
setup_requires=build_requires,
install_requires=build_requires + requirements,
entry_points={
"console_scripts": [
"adla = adla.loader:main",
"adlaml = adla.ml.loader:main"
]
},
packages=find_packages(where="src", exclude=("historical", "test", "specs")),
package_dir={"": "src"},
package_data={
"adla": ["src/adla/config.ini", "src/adla/specs/*.json"]
},
ext_modules=[
Extension(
"adla.ml.dtw",
["src/adla/ml/dtw.cpp"],
include_dirs=[resource_filename("numpy", "core/include")]
)
]
)
...
EDIT 有关更多信息,这里是 build_py
步骤 运行 本身的输出。
(devel)> $ python3 setup.py --verbose build_py
running build_py
creating build
creating build/lib.macosx-10.11-x86_64-3.5
creating build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/__init__.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/_version.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/analysis.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/commands.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/inspection.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/loader.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/modification.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/rbi.py -> build/lib.macosx-10.11-x86_64-3.5/adla
copying src/adla/util.py -> build/lib.macosx-10.11-x86_64-3.5/adla
creating build/lib.macosx-10.11-x86_64-3.5/adla/ml
copying src/adla/ml/__init__.py -> build/lib.macosx-10.11-x86_64-3.5/adla/ml
copying src/adla/ml/loader.py -> build/lib.macosx-10.11-x86_64-3.5/adla/ml
copying src/adla/ml/meta_model.py -> build/lib.macosx-10.11-x86_64-3.5/adla/ml
copying src/adla/ml/models.py -> build/lib.macosx-10.11-x86_64-3.5/adla/ml
copying src/adla/ml/util.py -> build/lib.macosx-10.11-x86_64-3.5/adla/ml
UPDATING build/lib.macosx-10.11-x86_64-3.5/None
error: [Errno 2] No such file or directory: 'build/lib.macosx-10.11-x86_64-3.5/None'
不幸的是,我不明白为什么 setuptools
试图找到文件 build/[...]/None
。我将不胜感激对错误的一些洞察!
我刚刚自己解决了这个问题。 setup.cfg
中的版本控制变量 versionfile_build
被设置为 None
而不是正确的版本控制版本文件。 setup.cfg
中的正确设置供参考。
[versioneer]
VCS = git
style = pep440
versionfile_source = src/adla/_version.py
versionfile_build = adla/_version.py
tag_prefix =
parentdir_prefix = adla-
[pytest]
norecursedirs = .git .vagrant .eggs contrib puppet