1
我想打包我的應用程序以在多個項目之間共享它。 我setup.py看起來是這樣的:無法導入使用distutils發佈的我自己的模塊
# -*- 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
創建我
我在用我的foo_bar這樣的應用程序的麻煩tar.gz文件。我通過PIP其安裝到獨立的virtualenv
pip install dist/foo_bar.tar.gz
和PIP凍結的輸出表明,它是安裝
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
你還試過''安裝python setup.py嗎?你能提供你的目錄結構嗎?當你試圖導入你的模塊時,你是否在相同的virtualenv?你爲什麼使用''py_modules''而不是''packages''?這是更靈活... – ziky
@ziky我已更新我的帖子,包括目錄結構。我使用單獨的virtualenv,但在那裏安裝了foo_bar。 TBH,我沒有聽說過'包'選項,可以使用它來代替py_module是否有所作爲? – mateuszb
你試圖導入''foo_bar'',但是你的包裏沒有''foo_bar.py''!嘗試將'bar.py''重命名爲該名稱。但是我從來沒有使用過這種方式。通常你創建一個包('__init __。py''文件的目錄)與''setup.py''是同一層。這意味着,你將在你的項目中創建另一個''foo_bar''目錄,並且你會在這裏放置''bar.py''。然後你會像導入foo_bar.bar一樣導入它。 – ziky