gpt4 book ai didi

python - 在自己创建的 .egg 文件中使用 Python 模块

转载 作者:太空宇宙 更新时间:2023-11-03 18:39:07 25 4
gpt4 key购买 nike

我是一名 Java 开发人员,正在尝试掌握 Pythog。我正在开发一个由三个部分组成的项目。一个服务器,一个客户端和一个公共(public)部分。 (使用eclipse)

在通用包中,我创建了一个如下所示的模块:

'''
Created on 4 Jan 2014

@author: christian
'''
import logging

def logDebug(msg):
logging.log(logging.DEBUG, msg)

def logInfo(msg):
logging.log(logging.INFO, msg)

def logWarning(msg):
logging.log(logging.WARNING, msg)

def logError(msg):
logging.log(logging.ERROR, msg)

def logCritical(msg):
logging.log(logging.CRITICAL, msg)

这相当简单,只是一个测试。我为这个项目设置了一个 setyp.py 并用它创建了一个 Egg 文件。我在客户项目中引用了这个egg-Fille。看起来像这样:

import logging
from de.christianae.main.common import mylogging

def startUp():
logging.basicConfig(filename="client.log", level=logging.DEBUG)

mylogging.logCritical("Test Critical")


if __name__ == '__main__':
startUp()

我想要在这里做的是设置 python 登录机制,但使用我自己的模块来避免总是必须使用日志级别。

当我尝试运行该代码时,出现以下异常:

pydev debugger: starting
Traceback (most recent call last):
File "/opt/eclipse/plugins/org.python.pydev_3.2.0.201312292215/pysrc/pydevd.py", line 1706, in <module>
debugger.run(setup['file'], None, None)
File "/opt/eclipse/plugins/org.python.pydev_3.2.0.201312292215/pysrc/pydevd.py", line 1324, in run
pydev_imports.execfile(file, globals, locals) #execute the script
File "/home/christian/repository/synctoolclient/trunk/src/de/christianae/main/client/SyncToolClie nt.py", line 7, in <module>
from de.christianae.main.common import mylogging
ImportError: No module named common

我做错了什么?有没有更好的方法来完成像 Java 中的 .jar 那样的事情?

最佳答案

问题是他的 Egg 目录是这样的:

| de/
| __init__.py
| christianae/
| __init__.py
| main/
| __init__.py
| common/
| __init__.py
| code.py

当他使用设置工具从中制作一个鸡蛋时,它只包含来自 c/__init__.py,因此导入无法像 Python 一样工作没有将 de 视为模块,也不会深入树中。

解决方法:将源扁平化为 common/*.py。因为他有 Java 背景,所以拥有所有这些目录对他来说是很自然的,但显然 setuptoolsdistutils 不喜欢这样。

关于python - 在自己创建的 .egg 文件中使用 Python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20932404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com