我已将我所有的个人、宠物项目迁移到 Dropbox,其中包括源代码。
我喜欢使用 Python,因为我可以切换到 Windows 或 Linux 机器,而且我只是执行脚本,它们会立即工作,无论我使用的是哪个操作系统或哪台特定的机器。
但是,我想改进我关于重用 python 功能的工作流程,这是绝大多数重复的。由于对导入的处理不善/懒惰,并且倾向于将我自己的模块文件复制粘贴到每个新脚本的同一个文件夹中,更不用说一遍又一遍地重新实现相同的微功能,我非常有动力停止这个工作流程并通过使用精心设计的 DRYed 模块和结构化导入来坚持强重用,最终得到更高级别、精益、针对问题的脚本。
.Net 在 VisualStudio 中工作的方式让我被“咬”了,这是一个重要的背景,您只需using
立即使用命名空间(好吧,有点,只要添加了正确的引用,我们知道)。
我已经阅读了很多关于 *.pth 文件、初始化.py 文件、附加到 的内容sys.path
,但这让我很困惑。
我的目标是:
- 在 Dropbox(或 GDrive 或其他)中有一个文件夹,其中包含两个子文件夹:
Scripts
和Modules
Scripts
文件夹将仅包含独立的单文件脚本,可能在任意嵌套级别的子文件夹中,但它们不应以任何方式相互引用,只需引用系统安装的 Python 模块和打包在Scripts
文件夹中的模块;Modules
文件夹应该包含一些文件夹和命名空间的层次结构,高级模块导入/重用低级模块,并且这些模块中的任何一个都使用系统安装的 Python 模块。
另一个理想的功能是能够将一些脚本移动到计算机的其他位置(例如,将其复制到桌面文件夹),并且通过仍然引用Dropbox/thatMagicFolder/Modules
.
反映我需求的典型工作流程:
- 我在一台机器上创建了一个脚本,并让它正常运行;
- 然后我去另一台机器(也有 Dropbox),安装一些缺少的 python 模块(比如 Numpy 或 PIL),然后运行我在另一台机器上创建的脚本;
- 我更新了脚本,将一些导入从文件夹中添加到更多已经存在的模块中
Modules
,并使其正常运行。理想情况下,脚本将包含最少的样板代码; - 我回到之前的机器,等待 Dropbox 同步,然后立即运行更新的脚本!
我对如何实现这一点没有明确的想法,我之前提到的几次尝试(使用__init__
文件和 *.pth 文件)而不是简化最终使一切变得更加复杂。但我仍然认为这是一件如此自然、如此明显的事情,以至于我可能只是错过了一些被启蒙者广为人知的东西。
欢迎任何帮助,感谢阅读!
编辑:关于一个几乎相同的问题(没有接受的答案)的一个有趣、更详细的问题是: