Tôi gặp sự cố khi sử dụng setup.py
để thiết lập gói python. Trước tiên, tôi có thiết lập thư mục sau:Lỗi nhập trên gói đã cài đặt bằng cách sử dụng setup.py
maindir
|- setup.py
|-mymodule
|- __init__.py
|- mainmodule.py
|-subdir
|- __init__.py
|- submodule.py
ví dụ: thư mục dự án chứa setup.py
và một thư mục mymodule
, mà tự nó chứa hai mô-đun python trong hai thư mục. File submodule.py
chứa chỉ
teststring = "hello world"
mainmodule.py
chứa:
from .subdir import submodule
mainstring = "42"
và setup.py
chứa:
import os
from setuptools import setup
setup(
name = "mytestmodule",
version = "0.0.1",
description = ("A simple module."),
packages=['mymodule'],
)
Khi tôi làm from mymodule import mainmodule
với ipython
từ bên trong sourceTest
hành vi hoạt động như mong đợi và tôi có thể tham khảo ví dụ mainmodule.submodule.teststring
cung cấp cho tôi chuỗi hello world
.
Ở phía bên kia, khi tôi cài đặt này 'gói' sử dụng python setup.py install
và cố gắng làm như vậy (từ bên trong một số thư mục khác), tôi nhận được một lỗi nhập khẩu:
In [1]: from mymodule import mainmodule
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/home/alexander/<ipython-input-1-cf4c9bafa487> in <module>()
----> 1 from mymodule import mainmodule
/home/alexander/build/bdist.linux-i686/egg/mymodule/mainmodule.py in <module>()
ImportError: No module named subdir
Tôi không thấy gì Tôi đã làm sai, khi tôi theo dõi một số Getting started tutorial và rules for importing intra-packages. Tôi cho rằng sai lầm của tôi là một sai lầm rất nhỏ, nhưng tôi không thể phát hiện ra nó và giúp đỡ được đánh giá cao.
Đây có phải là mô tả ở đâu đó không? Có một số tài liệu về nội dung 'setup' trên' distutils' không?Nó không có vẻ dễ dàng để tìm tài liệu đại diện. – Alex
Đã thêm liên kết vào ví dụ từ tài liệu. –
Để tham khảo thêm chi tiết về cách 'package_dir' được sử dụng đệ quy để tìm các gói con, miễn là các gói con đó được liệt kê trong' gói', đọc [this] (https://docs.python.org/2/ distutils/setupscript.html # listing-whole-packages). –