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

时间:2017-12-17 23:18:12

标签: python python-3.x release pypi

使用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模块中查找以解决这个问题。

我在哪里错了?

UPDATE 这就是我的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='something@gmail.com',
   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'
)

1 个答案:

答案 0 :(得分:1)

想出来 Python Interpreter需要知道需要从SomeCode /

中导入B.py

将A.py中的导入修改为相对导入

from .someSubDir.B import someClass

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