小编Cha*_*esB的帖子

相对进口的噩梦,pep 366如何运作?

我有一个"规范的文件结构"(我给出了明智的名称来简化阅读):

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 python-import runpy

31
推荐指数
3
解决办法
7127
查看次数

如何在不污染其命名空间的情况下在python模块中执行导入?

我正在开发一个用于处理一些科学数据的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?我忽略了另一个好的解决方案吗?

python module python-import

31
推荐指数
3
解决办法
1万
查看次数

git hooks:有没有克隆钩子?

我们希望在外部数据库中存储有关提交的一些元信息.在克隆或结帐期间,应该引用此数据库,并将元信息复制到克隆的repo中的文件.数据库是必需的而不是仅仅使用文件是为了索引和搜索等...

我想如果有一个克隆钩子,我们可以触发它.我在.git/hooks中找不到样本中的克隆挂钩.有吗?客户端是唯一的可能性是post-checkout hook?

git git-clone githooks

30
推荐指数
4
解决办法
2万
查看次数

Kerberos门票的终身

我已经开始配置kerberos了.

任何人都可以解释我们在krb5.conf文件中设置的票证生命周期和续订生命周期.

ticket_lifetime = 2d  
renew_lifetime = 7d
Run Code Online (Sandbox Code Playgroud)

是不是

  1. 2天后客户将获得新的续票?
  2. 7天后,我是否需要再次创建密钥选项卡并发送到客户端计算机?

kerberos

29
推荐指数
1
解决办法
5万
查看次数

.ico的理想尺寸

什么是.ico文件的理想大小,它位于窗口的顶角?

user-interface icons ico

27
推荐指数
2
解决办法
3万
查看次数

无法使用EGit克隆远程git存储库

我正在尝试使用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)

我怎样才能克隆这个回购?

eclipse git egit

27
推荐指数
3
解决办法
8万
查看次数

每个PHP程序员应该知道什么?

我想成为一名PHP/MySQL程序员

我必须知道哪些技术?

喜欢:

  1. 构架
  2. 集成开发环境
  3. 模板引擎
  4. Ajax和CSS框架

请告诉我必须知道的最低要求,并告诉我你在上一个清单中最喜欢的东西?

谢谢

php mysql frameworks

26
推荐指数
10
解决办法
1万
查看次数

什么是导入和提供可选功能的Python良好实践?

我在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)

python python-import

26
推荐指数
2
解决办法
7594
查看次数

如何在Windows共享上访问git仓库?

我希望能够将我的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远程?

windows git share windows-7 git-remote

26
推荐指数
1
解决办法
1万
查看次数

在C++中嵌入Lua

我一直试图将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)

c++ lua embedding undefined

25
推荐指数
1
解决办法
2万
查看次数