python - 如何列出模块所依赖的用户创建的 python 文件?
问题描述
我有兴趣使用doit
自动化 python 包的构建过程。如果可能的话,如果它所依赖的任何用户创建的源文件发生了变化,我想doit
重新执行一个任务。据我了解,完成此操作的最佳方法是使用file_dep
密钥和依赖源文件的列表,但是我在生成此列表时遇到了很多麻烦。
我尝试使用sys.modules
and inspect.getmembers()
,但这些解决方案无法处理不导入模块的导入语句,例如from x import Y
,不幸的是,这在我正在开发的包中很常见。
我调查的另一条路线是使用该snakefood
工具,它最初看起来就像我想要的那样,为给定路径中的每个文件生成文件依赖项列表。不幸的是,这个工具似乎对 Python 3 的支持有限,使它对我的包毫无用处。
是否有人对如何在 Python 3 中获得类似功能有任何见解snakefood
,或者是将我的所有源代码更改为仅导入模块的唯一选择?
解决方案
doit教程本身就是关于创建 python 模块导入图的!
它使用import_deps包,它类似于蛇食。
请注意,对于您的用例,您需要file_dep
在 Task 操作执行期间对其进行修改。为此,您需要将task
参数传递给您的操作(如此处所述)。
推荐阅读
- dns - 在 avahi 中更改域“本地”并使用具有多个标签的主机名
- spring - Reactive Spring,CompletableFuture 疑惑
- swift - 我是否需要每次都输入:sudo gem install cocoapods
- javascript - 错误:尝试安装反应应用程序时找不到模块“react-scripts/scripts/init.js”
- laravel - Mailgun:如何从我的本地机器发送电子邮件(Laravel)
- android - 无法使用 FirebasePushNotificationPlugin [Xamarin][Android] 将构建操作设置为 GoogleServicesJson
- android - 为什么最大长度过滤器不起作用?安卓
- javascript - 单击复选框时如何使未选中的复选框标签变灰?
- javascript - jQuery Datatable:标题和搜索在同一行
- django - gitignore 如何排除一个表