我正在创建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
我在做什么错?我应该以其他方式导入它还是应该更改安装程序以便可以导入模块?
编辑:
即使在testsupersecret
中将其称为setup.py
,也无法导入模块:
>>> import testsupersecret
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named testsupersecret
答案 0 :(得分:0)
test-super-secret
不是有效的模块名称-模块名称(或变量)中不能包含连字符,python认为这是一个负号,这就是为什么语法无效的原因。您应该使用下划线(您可能已经根据setup.py
-name="test_super_secret"
使用了下划线,只是尝试导入test_super_secret
)。
(Python软件包的名称中可能带有连字符,这可能是造成混淆的地方。因此test-super-secret
是pip软件包的有效名称,但是模块必须命名为test_super_secret
。)>
答案 1 :(得分:0)
似乎我没有正确的文件夹结构来获取模块作为库。创建包含__init__.py
的目录并将脚本移至该目录后,便能够导入import <MyLibrary>.<my_script_name>