使用连字符导入python自定义包

问题描述

我正在寻找一种方法来导入名称中带有连字符的自定义 python 包。我认为连字符不是推荐的方法,但由于它是一个共享项目,我无法控制它。

想到这里,我想添加一个 bash 脚本,它会在安装所有软件包后检查安装是否成功。

我可以使用以下方法进行验证:

<PYTHON_VERSION> -c "import <PACKAGE_NAME>" &> /dev/null
if [[ $? -ne 0 ]]; then
    echo "Failed"
fi

我看到我能够成功安装这个自定义包,因为我使用以下命令检查了虚拟环境:

>>> import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key,i.version)
   for i in installed_packages])
print(installed_packages_list)

还做了一个 pip freeze 来查看已安装的软件包。

但是在导入时我看到如下错误

>>> import build-config
  File "<stdin>",line 1
    import build-config
                ^
SyntaxError: invalid Syntax

>>> import build_config
Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
ModuleNotFoundError: No module named 'build_config'

请指点一下?

解决方法

您可以使用 importlib 模块。

像这样使用 importlib.import_module(name,package=None) 函数导入

import importlib
module_name = importlib.import_module('module-name')

然后使用 module_name 访问它。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...