Python ImportError:无法导入名称__version__
Posted
技术标签:
【中文标题】Python ImportError:无法导入名称__version__【英文标题】:Python ImportError: cannot import name __version__ 【发布时间】:2014-09-27 02:02:03 【问题描述】:我正在尝试使用 requests 和 requests_oauthlib,现在正在尝试他们在 requests_oauthlib 文档中使用的死简单 Twitter 验证凭据示例,以确认我已经掌握了基础知识。我做了一个“pip install requests requests_oauthlib”来获取模块。在终端窗口中,我可以“导入请求”没问题,但是当我尝试“导入 requests_oauthlib”时,我得到了这个:
>>> import requests_oauthlib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/requests_oauthlib/__init__.py", line 1, in
<module>
from .oauth1_auth import OAuth1
File "/usr/lib/python2.7/site-packages/requests_oauthlib/oauth1_auth.py", line 10, in
<module>
from requests.utils import to_native_string
File "/usr/lib/python2.7/site-packages/requests/utils.py", line 23, in <module>
from . import __version__
ImportError: cannot import name __version__
utils.py 的第 23 行确实是这样的:
from . import __version__
我在 Fedora 上使用 Python 2.7.5,在多次尝试使其正常工作后,我现在正用头撞墙,非常感谢任何帮助...
【问题讨论】:
你有这两个模块的最新版本吗? (试试pip install -U
)?我无法通过全新安装重现此问题。
感谢 Wooble,在我尝试重新启动计算机之前,以防万一出现问题,并且我无法正常导入 requests_oauthlib。叹息...应该早点尝试。不过谢谢你的想法。
【参考方案1】:
检查根目录下的__init__.py
。 openpyxl 从 .constrants.json 文件中读取这些信息。但是,PyInstaller 不知何故无法做到这一点。我想你自己写一个__version__.py
文件并在__init__.py
中替换它们。
另一种更简单的方法是像这样更改__init__.py
:
import json
import os
# Modified to make it work in PyInstaller
#try:
# here = os.path.abspath(os.path.dirname(__file__))
# src_file = os.path.join(here, ".constants.json")
# with open(src_file) as src:
# constants = json.load(src)
# __author__ = constants['__author__']
# __author_email__ = constants["__author_email__"]
# __license__ = constants["__license__"]
# __maintainer_email__ = constants["__maintainer_email__"]
# __url__ = constants["__url__"]
# __version__ = constants["__version__"]
#except IOError:
# # packaged
# pass
__author__ = 'See AUTHORS'
__author_email__ = 'eric.gazoni@gmail.com'
__license__ = 'MIT/Expat'
__maintainer_email__ = 'openpyxl-users@googlegroups.com'
__url__ = 'http://openpyxl.readthedocs.org'
__version__ = '2.4.0-a1'
"""Imports for the openpyxl package."""
from openpyxl.compat.numbers import NUMPY, PANDAS
from openpyxl.xml import LXML
from openpyxl.workbook import Workbook
from openpyxl.reader.excel import load_workbook
print('You are using embedded openpyxl... 2.4.0-a1 ...')
【讨论】:
对于那些有兴趣的人:这是在 pyinstaller 中为 pyinstaller 3.3 的 dev 分支修复的。请参阅 github 上的 issue on openpyxl 和 pull request。【参考方案2】:我在我的项目中使用了openpyxl,当我用py2exe制作exe时,编译是可以的,但是当我运行编译好的exe时,我遇到了同样的问题。
ImportError: 无法导入名称 __version__
尝试修改openpyxlpaceage文件夹根目录下的init.py,不要从constants.json文件中读取version,写成__version__ = '2.4.1'。 我就是这样解决的。
【讨论】:
以上是关于Python ImportError:无法导入名称__version__的主要内容,如果未能解决你的问题,请参考以下文章
ImportError:无法从部分初始化的模块“dash”导入名称“dcc”-python
Python3.6 ImportError:无法导入名称'main'Linux RHEL6
ImportError:无法导入名称“PandasError”
App Engine Python 2.7 - ImportError:无法导入名称 apiproxy
在 Python 2.7 中出现“ImportError:无法导入名称 HTTPSConnection”错误
Python urllib3 错误 - ImportError:无法导入名称 UnrewindableBodyError