使用Python 3.5
我有这个结构
someCode/
someCode/
A.py
__init__.py
setup.py
README.md
LICENSE
MANIFEST.rst
someSubDir/
B.py
__init__.py
A.py使用导入某些类的B.py
from someSubDir.B import someClass
当我运行我的python脚本时,这非常有效。
我使用轮子打包并将轮子安装在不同的conda环境中。这就是问题当我尝试使用导入模块时
import someCode.A as A
ImportError: No module named 'someSubDir.B'
似乎python解释器在环境中寻找名为someSubDir的模块,但我希望它在someCode模块中查找以解决这个问题。
我在哪里错了?
更新这是我的setup.py看起来像
from setuptools import setup, find_packages
ver = "9.9.9"
with open("README.md", mode='r') as f:
long_description = f.read()
setup(
name='someCode',
version=ver,
url='https://github.com/something',
description='something else',
long_description=long_description,
license='GNU',
author='someone',
author_email='[email protected]',
classifiers=[
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Topic :: Software Development",
"License :: OSI Approved :: GNU General Public License (GPL)",
"Programming Language :: Python :: 3.5",
],
keywords='operations',
packages=find_packages(),
install_requires=[],
python_requires='~=3.5'
)
弄清楚Python解释器需要知道需要从SomeCode /中导入B.py
修改了A.py中的导入以进行相对导入
from .someSubDir.B import someClass
一旦部署了构建的分发并尝试了上述导入,就像魅力一样