Python导入错误:无法导入名称__version__

13 投票
3 回答
35784 浏览
提问于 2025-04-18 15:56

我正在尝试使用requests和requests_oauthlib这两个库,现在只是想用它们来做一个非常简单的Twitter验证示例,目的是确认我已经掌握了基本的用法。我通过“pip install requests requests_oauthlib”来安装这些模块。在终端窗口中,我可以顺利地使用“import requests”,但当我尝试“import 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,现在在这个问题上碰壁了,尝试了很多次都没能解决,如果有人能帮忙,我将非常感激...

3 个回答

0

我遇到了一个和覆盖模块类似的错误,上面提到的方法都没用。

最后,我删除了我的Python虚拟环境(.venv),然后根据我的requirements.txt文件重新创建了一个,这样问题就解决了。

4

我在项目中使用了openpyxl这个库,当我用py2exe制作exe文件时,编译是没问题的,但运行这个编译好的exe文件时却遇到了同样的问题。

导入错误:无法导入名称 __version__

试着修改openpyxl包文件夹根目录下的init.py文件,不要从constants.json文件中读取版本,直接写成__version__ = '2.4.1'。我就是这样解决的。

7

检查一下根目录下的 __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 ...')

撰写回答