回购地点:https://github.com/willkara/SakaiPy
所以我有这个python modudle我正在创建。它目前有这种结构:
SakaiPy
├── SakaiPy
│ ├── __init__.py #1
│ └── RequestGenerator.py
├── SakaiTools
├── __init__.py #2
├── Assignment.py
├── Announcement.py
└── ...etc.py
└── setup.py
init .py#1看起来像:
__all__=['SakaiTools']
from SakaiTools import *
init .py#2为空
我的setup.py看起来像:
version='1.0',
description='Python interface to the Sakai RESTful API\'s',
license='MIT',
author='William Karavites',
author_email='wkaravites@gmail.com',
url='https://github.com/willkara/SakaiPy',
packages=['SakaiPy','SakaiPy/SakaiTools'],
requires={
"mechanize",
"cookielib",
"requests",
"simplejson"}
)
我的问题是该模块似乎构建不正确。
当我尝试使用这样的模块时:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from SakaiPy import *
print "hello"
authInfo={}
authInfo['baseURL'] =""
authInfo['loginURL']=""
authInfo['username']=""
authInfo['password']=""
rq = RequestGenerator.RequestGenerator(authInfo)
我收到此错误:
Traceback (most recent call last):
File "../sakaiTest.py", line 14, in <module>
rq = RequestGenerator.RequestGenerator(authInfo)
NameError: name 'RequestGenerator' is not defined
我的猜测是我的setup.py和 init .py脚本设置不正确。
答案 0 :(得分:2)
您将要更改目录结构,因为您现在技术上有两个Python模块,并且您给setuptools
一个错误的包路径。为了获得您正在寻找的路径,您需要将SakaiTools
目录嵌套在SakaiPy
目录中。有了这个,您应该能够拥有您正在寻找的导入,并且您可以像{I} SakaiTools
一样导入SakiPy.SakaiTools
。
SakaiPy
├── SakaiPy
│ ├── __init__.py # make this blank
│ ├── RequestGenerator.py
│ └── SakaiTools
│ ├── __init__.py # keep it blank
│ ├── Assignment.py
│ ├── Announcement.py
│ └── ...etc.py
└── setup.py
这将为您提供一个模块SakaiTools
作为子模块,这听起来像您正在寻找的。您将需要从第一个SakaiTools
中提取__init__.py
个导入,因为您可以使用此设置轻松访问这些导入。
如果您希望保留两个不同的模块,则需要告诉setuptools
您有两个不同的模块。
version='1.0',
description='Python interface to the Sakai RESTful API\'s',
license='MIT',
author='William Karavites',
author_email='wkaravites@gmail.com',
url='https://github.com/willkara/SakaiPy',
packages=['SakaiPy','SakaiTools'],
requires=(
"mechanize",
"cookielib",
"requests",
"simplejson",
)