[英]Importing custom python module
我正在創建 pip 包,在提交之前我想嘗試一下。 為簡單起見,讓我們假設 python 腳本如下所示:
def foo():
print("Hello World!")
我的包含元數據的setup.py
看起來像:
#!/usr/bin/env python3
from setuptools import setup, find_packages
setup(
name="test_super_secret",
version="1.0",
description="testing pip version 1",
packages=find_packages(),
)
我已經使用Wheel
編譯了腳本,所以我可以通過 pip 安裝它:
user@pc:$ python -m pip install dist/test_super_secret-1.0-py2-none-any.whl
Processing ./dist/test_super_secret-1.0-py2-none-any.whl
Installing collected packages: test-super-secret
Successfully installed test-super-secret-1.0
但是,當我無法從 python 導入這樣的模塊時:
>>> import test-super-secret
File "<stdin>", line 1
import test-super-secret
^
SyntaxError: invalid syntax
我究竟做錯了什么? 我應該以其他方式導入它還是應該更改設置以便可以導入模塊?
編輯:即使在setup.py
稱為testsupersecret
,也無法導入模塊:
>>> import testsupersecret
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named testsupersecret
test-super-secret
不是有效的模塊名稱——模塊名稱(或變量)中不能有連字符,python 認為這是一個減號,這就是為什么你會得到無效的語法。 您應該使用下划線(您可能已經根據您的setup.py
-- name="test_super_secret"
使用下划線,只需嘗試導入test_super_secret
)。
(Python 包的名稱中可以有連字符,這可能是混淆的來源。所以test-super-secret
是 pip 包的有效名稱,但模塊必須命名為test_super_secret
。)
看起來我沒有正確的文件夾結構來獲取模塊作為庫。 一旦我創建了包含__init__.py
目錄並將我的腳本移動到該目錄,我就能夠導入模塊,如import <MyLibrary>.<my_script_name>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.