导入自定义python模块

导入自定义python模块,python,import,pip,python-module,python-wheel,Python,Import,Pip,Python Module,Python Wheel,我正在创建pip包,在提交之前,我想尝试一下。为了简化,我们假设python脚本如下所示: def foo(): print("Hello World!") 包含元数据的Mysetup.py如下所示: #!/usr/bin/env python3 from setuptools import setup, find_packages setup( name="test_super_secret", ver

我正在创建pip包,在提交之前,我想尝试一下。为了简化,我们假设python脚本如下所示:

def foo():
    print("Hello World!")
包含元数据的My
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

test super secret
不是有效的模块名——模块名(或变量)中不能有连字符,python认为这是一个减号,这就是得到无效语法的原因。您应该使用下划线(根据您的
setup.py
--
name=“test\u super\u secret”
,您可能已经在使用下划线,只需尝试导入
test\u super\u secret


(Python包的名称中可能有连字符,这可能是混淆的原因。因此,
test super secret
是pip包的有效名称,但模块必须命名为
test super\u secret

看起来我没有正确的文件夹结构来将模块作为库。一旦我创建了包含
\uuu init\uuuu.py
的目录并将脚本移动到该目录,我就可以像导入
一样导入模块。

测试超级机密
不是有效的模块名,这是真的。但是,当我在
setup.py
中将名称更改为
testsupersecret
时,仍然无法导入此类模块,错误为:
ImportError:没有名为testsupersecret的模块。不管怎样,从最初的问题来看,皮普的名字是从哪里来的?它是
setup.py
中的名称,下划线改为连字符吗?
>>> import testsupersecret
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named testsupersecret