【发布时间】: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 ConfigurationApiimport Manager我试过了,但没有成功。 -
如果有ConfigurationApi包。不知道 repo 和 setup.py 是如何设置的,很难更准确地知道。
标签: python python-3.x pip python-import setup.py