导入自定义python模块

时间:2020-11-08 18:37:47

标签: python import pip python-module python-wheel

我正在创建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

2 个答案:

答案 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>

这样的模块