我为一个看似简单的问题道歉,我是在Python中使用类的新手。
我正在使用Pycharm
,我的文件夹结构如下所示:
文件夹constant-contact-python-wrapper
在__init.py__
和restful_lib.py
下定义了几个类(我从github
获得了此库)。我想在Trial.py
文件夹中包含的文件ConstantContact
中使用这些类。我使用以下代码,但无法导入该类。
import sys
sys.path.append('C:\\Users\\psinghal\\PycharmProjects\\ConstantContact\\constant-contact-python-wrapper')
import constant-contact-python-wrapper
API_KEY = "KEY" #not a valid key
mConnection = CTCTConnection(API_KEY, "joe", "password123")
请有人能指出我正确的方向吗?
答案 0 :(得分:1)
constant-contact-python-wrapper
和ConstantContact
是python的无关包。在与__init__.py
相同的目录中创建manage.py
,它应该按预期工作。
答案 1 :(得分:1)
您尝试纠正的部分问题是,您有两个在同一范围内的库,即使它看起来不一定是必需的。
最简单的解决方案是将constant-contact-python-wrapper简单地放在ConstantContact文件夹下的新文件夹下,用于导入你自己没有编写的代码。这样,您的项目就会针对此实例以及将来导入来自其他库的代码的实例进行组织
理想情况下,文件夹结构为:
ConstantContact
|___ ConstantContact
|____ExternalLibraries #(or some name similar if you plan on using different libraries)
|___constant-contact-python-wrapper
使用上面的模型,您现在可以非常轻松地组织层次结构以容纳导入的代码。
为了便于轻松导入,您还需要设置以下内容:
1.在ExternalLibraries中创建 init .py文件。内容如下:
from constant-contact-python-wrapper import #The class or function you want to use
这将有助于导入,并可以扩展到您选择使用的未来库。
然后,您可以在ConstantContact文件夹中编写的代码中使用import语句:
from ExternalLibraries import #The class or function you chose above
如果您要导入多个类,可以使用逗号在import语句中分隔它们。例如:
from Example import foo,bar,baz
由于ExternalLibraries中的 init .py文件直接导入所有函数/类,因此您现在可以使用它们,甚至不必使用点语法(即library.func)。
来源和进一步阅读:
“所有并导入*”Can someone explain __all__ in Python?
“Python Project Skeleton”http://learnpythonthehardway.org/book/ex46.html
“模块”http://docs.python-guide.org/en/latest/writing/structure/#modules