如何从PyPI导入名称中带有连字符的软件包?

时间:2019-07-08 16:26:03

标签: python pypi

PyPI中有一个名为neat-python的软件包(是的,带连字符)。我可以很好地安装它,但不能将其导入Python。我已经尝试过使用下划线,括号并将名称设置为字符串,但是import语句当然不允许使用它们。 PyPI是否实际上接受带有非法Python名称的软件包,还是我忽略的解决方案?

2 个答案:

答案 0 :(得分:3)

导入语法中不允许使用

连字符。对于“整洁的python”,该软件包将简单地安装为“整洁的”:

/usr/local/lib/python3.7/site-packages

您可以通过查看您的site-packages目录(对我来说是%SPARK_HOME%/bin/spark-shell --packages saurfang:spark-sas7bdat:2.1.0-s_2.11 )来进行检查。

编辑:是的,PyPI包允许这样做,这可能很烦人。通常,实际的软件包名称会与从PyPI安装的名称非常相似。

答案 1 :(得分:1)

从python3.x开始,您可以将importlib用于某些通用模块,该模块实际使用名称中的连字符进行安装。我将以neat-python为例,即使我被告知它实际上是作为neat安装的:

--myscript.py--

import importlib
neat = importlib.import_module("neat-python")
# to then call "mymodule" in neat
neat.mymodule(someobject)