需要帮助了解Python中相对导入和绝对导入的相关问题吗
当我想在特定文件夹中安装某个Python包(使用pip install-t),然后从该包中导入模块时,我遇到了一个错误 我在软件包的Github上发布了这个问题,结果发现我无法在某个文件夹中安装软件包;不支持以这种方式安装包 即使没有google collab,我也可以在尝试使用pip install-t sklearnFolder在某个特定文件夹中安装sklearn,然后将其作为sklearnFolder.sklearn.manifold导入时重现导入错误 这不是安装/使用scikit lean的受支持方式。它不起作用的一个原因是,scikit learn中的一些模块使用绝对导入(例如,从sklearn导入某物),这将导致此类设置失败 您应该使用pip install安装它,或者如果您想将它放在某个特定的文件夹中,将repo克隆到该文件夹,然后运行pip install-e,在这两种情况下,它都将作为sklearn导入 从 我不太明白这个解释 我的想法是需要帮助了解Python中相对导入和绝对导入的相关问题吗,python,import,python-import,Python,Import,Python Import,当我想在特定文件夹中安装某个Python包(使用pip install-t),然后从该包中导入模块时,我遇到了一个错误 我在软件包的Github上发布了这个问题,结果发现我无法在某个文件夹中安装软件包;不支持以这种方式安装包 即使没有google collab,我也可以在尝试使用pip install-t sklearnFolder在某个特定文件夹中安装sklearn,然后将其作为sklearnFolder.sklearn.manifold导入时重现导入错误 这不是安装/使用scikit lea
from folderName.package import module
与
from package import module
因为它们都是绝对进口。与中一样,它们都完全指定导入模块的路径。所以我的理解有些偏差,但我不知道是什么 在导入中,不指定folderName作为包的前缀。如果包已安装或位于python路径中,则只需使用包名进行导入
# Assume the below structure is under a directory (folder) called /app/home/packages.
reservation/ This is your top-level pacakge
__init__.py Initialize the package
hotels/ Subpackage for hotel reservations
__init__.py
slots.py
bid.py
demand.py
...
restaurents/ Another Subpackage under hotels
__init__.py
cuisine.py
hours.py
tableslots.py
...
rewards/ Subpackage for rewards
__init__.py
points.py
discounts.py
membersonly.py
...
由于包位于/app/home/packages下,因此以下导入无效,因为您在文件夹名称前加了前缀
from packages.reservation import hotels
正确的导入方法是从实际的包中导入,该包具有包初始化_init__u;.py。如果您在示例中看到,reservation文件夹具有uuu init_uuuu.py
from reservation import hotels
如果要导入hotels下的子模块,则将使用包作为前缀:
from reservation.hotels import restaurents
或者,您可以直接导入子模块,但在使用包时,您必须以包为前缀:
import reservation.hotels.restaurents
如果包位于其他文件夹中,而不是python路径中,该怎么办?如果它位于非python位置,则必须附加路径<代码>从myscript导入x,y,z导入系统路径.append('/app/home/others')