无法导入我自己的随 distutils 分发的模块
Can't import my own module distributed with distutils
我想打包我的应用程序以便在多个项目之间共享它。
我的 setup.py 看起来像这样:
# -*- coding: utf-8 -*-
from distutils.core import setup
setup(
name='foo_bar',
version='1.0',
py_modules=['foo_bar'],
install_requires=[
'bitstring==3.1.5',
'pytz==2016.4',
'wheel==0.24.0', ]
)
然后我运行命令
python setup.py sdist
为我创建 tar.gz 文件
我在使用 foo_bar 应用程序时遇到问题。我正在通过 pip
将它安装到单独的 virtualenv 中
pip install dist/foo_bar.tar.gz
并且 pip freeze 的输出表明它已安装
foo-bar==1.0
bitstring==3.1.5
pytz==2016.4
wheel==0.24.0
当我尝试在 python 控制台中导入此模块时
import foo_bar
我得到ImportError: No module named 'foo_bar'
我错过了什么?
编辑:
我的文件结构如下所示:
foo_bar
├── dist
│ └── foo_bar-1.0.tar.gz
├── __init__.py
├── MANIFEST
├── bar.py
├── requirements.txt
├── setup.py
您能提供一下您的目录结构吗?当你试图导入你的模块时,你在同一个 virtualenv 中吗?您为什么使用 py_modules
而不是 packages
?
此外,您正在尝试导入 foo_bar
,但是您的包中没有 foo_bar.py
!尝试将 bar.py
重命名为该名称。
注意:我从来没有这样使用过包。通常,您会在与 setup.py
相同的级别上创建一个包(包含 __init__.py
文件的目录)。这意味着,您将在您的项目中创建另一个 foo_bar
目录,并在那里放置 bar.py
。然后你会像 import foo_bar.bar
.
一样导入它
我想打包我的应用程序以便在多个项目之间共享它。 我的 setup.py 看起来像这样:
# -*- coding: utf-8 -*-
from distutils.core import setup
setup(
name='foo_bar',
version='1.0',
py_modules=['foo_bar'],
install_requires=[
'bitstring==3.1.5',
'pytz==2016.4',
'wheel==0.24.0', ]
)
然后我运行命令
python setup.py sdist
为我创建 tar.gz 文件
我在使用 foo_bar 应用程序时遇到问题。我正在通过 pip
将它安装到单独的 virtualenv 中pip install dist/foo_bar.tar.gz
并且 pip freeze 的输出表明它已安装
foo-bar==1.0
bitstring==3.1.5
pytz==2016.4
wheel==0.24.0
当我尝试在 python 控制台中导入此模块时
import foo_bar
我得到ImportError: No module named 'foo_bar'
我错过了什么?
编辑:
我的文件结构如下所示:
foo_bar
├── dist
│ └── foo_bar-1.0.tar.gz
├── __init__.py
├── MANIFEST
├── bar.py
├── requirements.txt
├── setup.py
您能提供一下您的目录结构吗?当你试图导入你的模块时,你在同一个 virtualenv 中吗?您为什么使用 py_modules
而不是 packages
?
此外,您正在尝试导入 foo_bar
,但是您的包中没有 foo_bar.py
!尝试将 bar.py
重命名为该名称。
注意:我从来没有这样使用过包。通常,您会在与 setup.py
相同的级别上创建一个包(包含 __init__.py
文件的目录)。这意味着,您将在您的项目中创建另一个 foo_bar
目录,并在那里放置 bar.py
。然后你会像 import foo_bar.bar
.