打包的Python Wheel无法在同一目录中导入包

问题描述 投票:0回答:1

使用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 python-3.x release pypi
1个回答
1
投票

弄清楚Python解释器需要知道需要从SomeCode /中导入B.py

修改了A.py中的导入以进行相对导入

from .someSubDir.B import someClass

一旦部署了构建的分发并尝试了上述导入,就像魅力一样

© www.soinside.com 2019 - 2024. All rights reserved.