pip install 抛出与 setup.py 中函数相关的错误
pip install throwing error relating to a function in setup.py
我尝试将我的 sdk-python 包的 pip install /Users/me/git/sdk-python/
添加到我的测试项目中,但出现此错误:
(venv) Pauls-MBP-2:ibm-cos-sdk-python-config-test paulcarron$ python -m pip install /Users/paulcarron/git/ibm-cos-sdk-python-config/
Processing /Users/paulcarron/git/ibm-cos-sdk-python-config
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/k1/h29nn0z959q0dr6b44kxx_8h0000gn/T/pip-req-build-cmc5fb_p/setup.py", line 24, in <module>
version=get_version(),
File "/private/var/folders/k1/h29nn0z959q0dr6b44kxx_8h0000gn/T/pip-req-build-cmc5fb_p/setup.py", line 19, in get_version
return VERSION_RE.search(init).group(1)
AttributeError: 'NoneType' object has no attribute 'group'
这是我的 setup.py:
#!/usr/bin/env python
import os
import re
import sys
from setuptools import setup, find_packages
# sdk python version check
_valid = sys.version_info[:2] == (2, 7) or sys.version_info >= (3,4)
if not _valid:
sys.exit("Sorry, SDK only supports versions 2.7, 3.4, 3.5, 3.6, 3.7 of python.")
ROOT = os.path.dirname(__file__)
VERSION_RE = re.compile(r'''__version__ = ['"]([a-z0-9.]+)['"]''')
def get_version():
init = open(os.path.join(ROOT, 'python_sdk', '__init__.py')).read()
return VERSION_RE.search(init).group(1)
setup(
name='sdk-python',
version=get_version(),
description='SDK for Python',
long_description=open('README.md').read(),
author='me',
url='https://github.company.com/org/sdk-python',
scripts=[],
packages=find_packages(exclude=['tests*']),
include_package_data=True,
license="Apache License 2.0",
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Natural Language :: English',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
],
)
这以前有效,但明显发生了一些变化。我只是不确定是什么,基于错误,我不知道从哪里开始,除了它可能与我的 setup.py
中的 get_version
有关。我也不确定鸡蛋参考来自哪里。
我更新了 __version__
以包含 _
字符,但 get_version
包含 [a-z0-9.]
以防止 _
字符被允许,所以我更改了它至 [a-z0-9._]
,我现在可以安装软件包了。
我试图将 python 库 t运行sformations 和 运行 安装到同一个问题中。
事实证明,python 是以 DOS 格式存储或提取的(在我的 RPi 上),这破坏了 setup.py 中提取 README 和 LICENSE 等内容的正则表达式搜索。
解决方案是下载库存档,解压它,将 setuptools 扫描的 python 文件转换为 unix 格式,制作一个新的存档,然后 运行 sudo pip install with the new存档。
这是我针对特定库 t运行sformations 的步骤:
wget https://files.pythonhosted.org/packages/e9/57/02bfe4c63659c03980639cdb0e45a0a423910ebc1f441b53ea573de83650/transformations-2019.1.1.tar.gz
sudo pip install transformations-2019.1.1.tar.gz
cd transformations-2019.1.1/
sudo apt install dos2unix
dos2unix transformations/*
cd ..
tar cf trans.tar transformations-2019.1.1/
pip install trans.tar
我尝试将我的 sdk-python 包的 pip install /Users/me/git/sdk-python/
添加到我的测试项目中,但出现此错误:
(venv) Pauls-MBP-2:ibm-cos-sdk-python-config-test paulcarron$ python -m pip install /Users/paulcarron/git/ibm-cos-sdk-python-config/
Processing /Users/paulcarron/git/ibm-cos-sdk-python-config
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/k1/h29nn0z959q0dr6b44kxx_8h0000gn/T/pip-req-build-cmc5fb_p/setup.py", line 24, in <module>
version=get_version(),
File "/private/var/folders/k1/h29nn0z959q0dr6b44kxx_8h0000gn/T/pip-req-build-cmc5fb_p/setup.py", line 19, in get_version
return VERSION_RE.search(init).group(1)
AttributeError: 'NoneType' object has no attribute 'group'
这是我的 setup.py:
#!/usr/bin/env python
import os
import re
import sys
from setuptools import setup, find_packages
# sdk python version check
_valid = sys.version_info[:2] == (2, 7) or sys.version_info >= (3,4)
if not _valid:
sys.exit("Sorry, SDK only supports versions 2.7, 3.4, 3.5, 3.6, 3.7 of python.")
ROOT = os.path.dirname(__file__)
VERSION_RE = re.compile(r'''__version__ = ['"]([a-z0-9.]+)['"]''')
def get_version():
init = open(os.path.join(ROOT, 'python_sdk', '__init__.py')).read()
return VERSION_RE.search(init).group(1)
setup(
name='sdk-python',
version=get_version(),
description='SDK for Python',
long_description=open('README.md').read(),
author='me',
url='https://github.company.com/org/sdk-python',
scripts=[],
packages=find_packages(exclude=['tests*']),
include_package_data=True,
license="Apache License 2.0",
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Natural Language :: English',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
],
)
这以前有效,但明显发生了一些变化。我只是不确定是什么,基于错误,我不知道从哪里开始,除了它可能与我的 setup.py
中的 get_version
有关。我也不确定鸡蛋参考来自哪里。
我更新了 __version__
以包含 _
字符,但 get_version
包含 [a-z0-9.]
以防止 _
字符被允许,所以我更改了它至 [a-z0-9._]
,我现在可以安装软件包了。
我试图将 python 库 t运行sformations 和 运行 安装到同一个问题中。
事实证明,python 是以 DOS 格式存储或提取的(在我的 RPi 上),这破坏了 setup.py 中提取 README 和 LICENSE 等内容的正则表达式搜索。
解决方案是下载库存档,解压它,将 setuptools 扫描的 python 文件转换为 unix 格式,制作一个新的存档,然后 运行 sudo pip install with the new存档。
这是我针对特定库 t运行sformations 的步骤:
wget https://files.pythonhosted.org/packages/e9/57/02bfe4c63659c03980639cdb0e45a0a423910ebc1f441b53ea573de83650/transformations-2019.1.1.tar.gz
sudo pip install transformations-2019.1.1.tar.gz
cd transformations-2019.1.1/
sudo apt install dos2unix
dos2unix transformations/*
cd ..
tar cf trans.tar transformations-2019.1.1/
pip install trans.tar