首页 > 解决方案 > 从 Anaconda 的 site-package 文件夹中的文件夹导入包

问题描述

我完全是新手,所以请耐心等待;我对包所做的唯一一件事就是让 anaconda 为我安装 numpy,然后我将它(和其他一些)导入到脚本中。这是我第一次玩包本身。

目标:我有一堆 .py 脚本,我想将它们收集到一个包中;我想要我习惯的行为;我有一些 Python 程序,它们存在于我的计算机中的某个地方(无论有人选择保存项目的地方),而且不必担心路径(因为那是一罐我也不明白的蠕虫),我想输入 mypackage,“导入mypackage as mp”(就像 import numpy as np 一样),然后参加比赛。

请注意,我不知道 numpy 或任何适当的包的结构如何,所以这个类比可能会产生误导?但我想要的是导入跨多个 .py 脚本定义的函数,这些脚本都保存在一个文件夹中(为方便起见,我也将其称为 mypackage)。

我按照此视频中的示例编写了一个模块并将其放置在 anaconda3\Lib\site-packages\ 中,并且能够编写一个位于其他随机文件夹中的 python 程序,然后可以导入并运行该模块。

但是,同样,这仅允许我访问与单个 .py 脚本/模块对应的函数。我希望能够使用我的所有脚本/模块添加一个文件夹(我假设地址为 anaconda3\Lib\site-packages),然后能够导入与所有这些模块对应的包。

我尝试了一些解决方案,但还没有运气。我不太了解init .py 和path .py 脚本(具体来说,我不明白它们是否需要在 \site-packages\ 或 \site-packages\mypackage 中)。特别是,我遵循了这个解决方案,因为他把它拼出来了,但是我无法让 python 在 \site-packages\mypackage 中导入任何东西。

编辑:我按照视频中的步骤操作,得到了我想要的结果。

包文件夹结构

分包文件夹结构

但是,并非所有用于导入视频中的包的方法都适用于我。这是我能够在一个 python 脚本中成功使用的代码,例如,在我的桌面上,并且能够访问包,如下所示:

import mypackage.demo # mypackage is the folder, demo is the python script
mypackage.demo.demoprint() # demoprint() is the function defined in demo.py
> Now in the demo file!
del mypackage

from mypackage.demo import demoprint
demoprint()
> Now in the demo file!
del demoprint

import mypackage.demo as mp
mp.demoprint() 
> Now in the demo file!
del mp

# Call subpackage functions

from mypackage.subpackage.subdemo import subdemoprint
subdemoprint()
> Now in the subdemo package and file!
del subdemoprint

from mypackage.subpackage import subdemo as sd
sd.subdemoprint()
> Now in the subdemo package and file!
del sd

标签: pythonimportmodulepackage

解决方案


推荐阅读