【问题标题】:Unresolved reference when importing in Python在 Python 中导入时未解析的引用
【发布时间】:2019-06-28 07:17:54
【问题描述】:

我已经使用 Pip 从 GitHub 安装了一个 Python 包。它将它安装到我的包内的 src 文件夹中。我的 foldr 结构现在看起来像这样:

TestApiClient/src/sdk-config/config_a

我需要导入ConfigurationApi 和Manager。

我试过了,但它不起作用:

from src.config_a.configuration_api import ConfigurationApi
from src.config_a.manager import Manager

这个应该怎么导入?

ConfigurationApi setup.py

#!/usr/bin/env python
import os
import re
import sys

from setuptools import setup, find_packages

# Config 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, 'config', '__init__.py')).read()
    return VERSION_RE.search(init).group(1)


setup(
    name='sdk-config',
    version=get_version(),
    description='Config SDK for Python',
    long_description=open('README.md').read(),
    author='ME',
    url='https://github.my_company.com/my_org/repo_name',
    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',
    ],
)

其他信息

我卸载并重新安装了,但这次我没有以可编辑模式安装。

如果我执行pip list,我可以看到sdk-config 已安装。我试图用sdk_config = __import__("sdk-config") 导入它,我想我可能会做类似的事情:

from sdk_config.config_a.configuration_api import ConfigurationApi
from sdk_config.config_a.manager import Manager

但是,这导致了这个错误:

Traceback (most recent call last):
  File "/Users/me/PycharmProjects/TestConfigApiClient/TestApiClient.py", line 1, in <module>
    sdk_config = __import__("sdk-config")
ModuleNotFoundError: No module named 'sdk-config'

【问题讨论】:

  • 您是如何实际安装它的? pip 并没有“将东西安装到包内的 src 文件夹中”,真的。此外,如果包在 GitHub 上公开,请也链接到它——无需向我们隐瞒细节!
  • pip install -e git+ssh://git@github.my_company.com/my_org/repo_name.git@prototype#egg=config_sdk
  • Right - 根据配置将包安装到您的 virtualenv 或其他 Python 路径目录(例如.local)中。当然,实际代码将存在于src 目录somewhere 中,但您仍然应该仅通过包名称导入它。
  • 你是说我应该使用:import ConfigurationApi import Manager 我试过了,但没有成功。
  • 如果有ConfigurationApi包。不知道 repo 和 setup.py 是如何设置的,很难更准确地知道。

标签: python python-3.x pip python-import setup.py


【解决方案1】:

问题似乎是我全局安装了包,但我在没有包的虚拟环境中工作。然后,当我将它安装在虚拟环境中时,它就可以工作了。

【讨论】:

    猜你喜欢
    • 2018-01-04
    • 2021-06-17
    • 2016-08-26
    • 2015-06-09
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2022-11-15
    相关资源
    最近更新 更多