我有一个"规范的文件结构"(我给出了明智的名称来简化阅读):
mainpack/
__main__.py
__init__.py
- helpers/
__init__.py
path.py
- network/
__init__.py
clientlib.py
server.py
- gui/
__init__.py
mainwindow.py
controllers.py
Run Code Online (Sandbox Code Playgroud)
在此结构中,例如,每个包中包含的模块可能希望helpers通过相对导入来访问实用程序,例如:
# network/clientlib.py
from ..helpers.path import create_dir
Run Code Online (Sandbox Code Playgroud)
该程序__main__.py以这种方式使用该文件"作为脚本"运行:
python mainpack/
Run Code Online (Sandbox Code Playgroud)
试图按照PEP 366我已经把__main__.py这些行:
___package___ = "mainpack"
from .network.clientlib import helloclient
Run Code Online (Sandbox Code Playgroud)
但是在跑步时:
$ python mainpack
Traceback (most recent call last):
File "/usr/lib/python2.6/runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "path/mainpack/__main__.py", line 2, in <module> …Run Code Online (Sandbox Code Playgroud) 我正在开发一个用于处理一些科学数据的Python包.其他模块和包中有多个经常使用的类和函数,包括numpy,我几乎在包的任何模块中定义的每个函数中都需要这些类和函数.
什么是Pythonic处理它们的方法?我考虑了多种变体,但每种变体都有其自身的缺点.
在模块级导入类from foreignmodule import Class1, Class2, function1, function2
然后可以从每个函数轻松访问导入的函数和类.另一方面,它们污染了模块命名空间,dir(package.module)并help(package.module)使用导入的函数混乱
在函数级别导入类from foreignmodule import Class1, Class2, function1, function2
函数和类很容易访问,不会污染模块,但每个函数中最多十几个模块的导入看起来像很多重复的代码.
在模块级别导入模块import foreignmodule
不需要将模块名称添加到每个函数或类调用中来补偿不太多的污染.
使用一些人为的解决方法,比如使用函数体进行所有这些操作,并仅返回要导出的对象......就像这样
def _export():
from foreignmodule import Class1, Class2, function1, function2
def myfunc(x):
return function1(x, function2(x))
return myfunc
myfunc = _export()
del _export
Run Code Online (Sandbox Code Playgroud)
这设法解决了问题,模块名称空间污染和功能的易用性......但它似乎根本不是Pythonic.
那么什么解决方案是最Pythonic?我忽略了另一个好的解决方案吗?
我们希望在外部数据库中存储有关提交的一些元信息.在克隆或结帐期间,应该引用此数据库,并将元信息复制到克隆的repo中的文件.数据库是必需的而不是仅仅使用文件是为了索引和搜索等...
我想如果有一个克隆钩子,我们可以触发它.我在.git/hooks中找不到样本中的克隆挂钩.有吗?客户端是唯一的可能性是post-checkout hook?
我已经开始配置kerberos了.
任何人都可以解释我们在krb5.conf文件中设置的票证生命周期和续订生命周期.
ticket_lifetime = 2d
renew_lifetime = 7d
Run Code Online (Sandbox Code Playgroud)
是不是
我正在尝试使用Egit克隆远程git存储库,通过https协议.我按照这个在线教程.
当我插入URI:https:// username @ host:port/repositorypath,password并单击NEXT时,我收到以下错误消息:
Cannot list the available branches.
Reason:
Exception caught during execution of ls-remote command.
Run Code Online (Sandbox Code Playgroud)
我怎样才能克隆这个回购?
我想成为一名PHP/MySQL程序员
我必须知道哪些技术?
喜欢:
请告诉我必须知道的最低要求,并告诉我你在上一个清单中最喜欢的东西?
谢谢
我在github上写了一个软件.它基本上是一个带有一些额外功能的托盘图标.我想提供一段工作代码而不必让用户安装本质上依赖于可选功能的东西,我实际上并不想导入我不会使用的东西所以我认为这样的代码将是"好的解决方案":
---- IN LOADING FUNCTION ----
features = []
for path in sys.path:
if os.path.exists(os.path.join(path, 'pynotify')):
features.append('pynotify')
if os.path.exists(os.path.join(path, 'gnomekeyring.so')):
features.append('gnome-keyring')
#user dialog to ask for stuff
#notifications available, do you want them enabled?
dlg = ConfigDialog(features)
if not dlg.get_notifications():
features.remove('pynotify')
service_start(features ...)
---- SOMEWHERE ELSE ------
def service_start(features, other_config):
if 'pynotify' in features:
import pynotify
#use pynotify...
Run Code Online (Sandbox Code Playgroud)
但是有一些问题.如果用户格式化他的机器并安装最新版本的操作系统并重新部署此应用程序,则功能会在没有警告的情况下突然消失.解决方案是在配置窗口中显示:
if 'pynotify' in features:
#gtk checkbox
else:
#gtk label reading "Get pynotify and enjoy notification pop ups!"
Run Code Online (Sandbox Code Playgroud)
但是,如果这是一个mac,我怎么知道我不是在寻找一个他们永远无法填充的依赖关系的疯狂追逐用户?
第二个问题是:
if os.path.exists(os.path.join(path, …Run Code Online (Sandbox Code Playgroud) 我希望能够将我的Windows 7桌面上的工作仓库同步到我的Windows 7笔记本电脑,而无需将我的提交推送到我们的主服务器.我该怎么做呢?我无法弄清楚如何设置远程路径,以便git可以理解它的位置.我通常使用Git Bash来处理git,而不是windows命令行,所以这里的问题很可能是我无法弄清楚如何在Git Bash中编写一个引用windows共享的路径.
所以,说我有一个回购(Windows共享路径):
\\\\MyWorkPCName\dev\myrepo\
Run Code Online (Sandbox Code Playgroud)
在命令行中,我可以访问目录和文件(尽管使用pushd,因为cmd是愚蠢的),如何将其转换为有效的git远程?
我一直试图将lua嵌入到c ++应用程序中,但由于编译器抱怨"lua_open"而无济于事.我正在使用Lua 5.2.
我发现很多文章声称lua_open()在第五版中被替换了,但没有一个提到什么.
这是我试图编译的代码
extern "C" {
#include "../lua/lua.h"
#include "../lua/lualib.h"
#include "../lua/lauxlib.h"
}
int main()
{
int s=0;
lua_State *L = lua_open();
// load the libs
luaL_openlibs(L);
luaL_dofile(L,"example.lua");
printf("\nDone!\n");
lua_close(L);
return 0;
}
Run Code Online (Sandbox Code Playgroud)