2016-07-29 111 views
0

过去几天这个问题一直令我疯狂。Python:是否可以从多个外部库中创建一个包?

所以基本上,我试图将一个纯Python项目移植到一个合适的PyCharm项目。这基本上可以提高代码质量和项目结构。

我希望它基本上创建一个virtualenv来容纳一切,但事实并非如此简单。该项目最终将由多位开发人员以Git作为源代码控制同时开发,默认库将被修改为。我认为这意味着图书馆应该最终由Git进行追踪。就我所知,Virtualenv在这里不应该有任何帮助,因为它不能在系统之间移植(或者至少还在测试中)。

该项目将在未来部署到Centos服务器。

所以我能想到的唯一方案就是将所有库(使用pip install -t Libraries <ExampleLibrary>完成)简单引入到一个文件夹中,里面有一个__init__.py,并使用它们从其他python文件作为Pycharm项目中的一个包。

这是可能的/推荐?我尝试过各种方法来引用这些库,但它们在运行时都不起作用。不知何故,当库中的文件从他们自己的包中导入别的东西时,会引发一个ImportError,说没有这样的模块。

也会接受任何其他建议。

使用Pycharm社区版。

编辑:经过一个良好的夜间休息后,我认为问题的症结实际上只是项目组织。在将它移植到Pycharm之前,该项目按预期工作,但它具有根目录中的所有python文件和根目录子文件夹中的库,每个项目文件具有相同的样板代码: import os, sys absFilePath = os.path.dirname(os.path.abspath(__file__)); sys.path.insert(1, absFilePath + "/lib")

我希望通过使用Pycharm来帮助我充实软件包,我可以避免重复样板代码。

+0

为什么你要修改你的依赖?这通常会导致你的问题......你可以继承它们并添加/修改你想改变的功能吗?如果你绝对需要供应商的东西,看看在他们的回购有它自己的几个包的版本的请求库。 (如果你正在修改依赖关系,它们必须从一开始就在git中!) –

+0

我的修改只是一些库函数中的一行,他们不应该打破结构,我想呢?你从图书馆继承的建议是我没有想到的,但是我不知道如果我朝那个方向前进,我会如何做出我想做的改变。 是的,在将项目移植到Pycharm之前的原始计划是将这些库放在项目文件夹旁边的git仓库中。但是现在我只想要一个更好的项目结构,因为以前,所有东西都在根文件夹中,这使得事情变得混乱。 –

+0

如果你的代码质量不是很好,你可能想阅读如何解决*那*。添加一个IDE不太可能会奇迹般地修复你的任何问题,甚至像Pycharm一样好。 –

回答

0

注意:没有完整的解决方案。

下面添加的模板代码强制包含代码的文件与libs文件夹位于同一目录中。

对于Pycharm,我所要做的就是将libs文件夹标记为源文件夹。即使将模板代码添加到文件中,修改后的库仍可按预期工作。

对于Python Shell中,仍然需要这个模板代码:

import os 
import sys 

absFilePath = os.path.dirname(os.path.abspath(__file__)) 
sys.path.insert(1, absFilePath + "/lib") 
相关问题