小编Hib*_*u57的帖子

Python:导入子包或子模块

已经使用扁平包,我没想到我遇到嵌套包的问题.这是…

目录布局

dir
 |
 +-- test.py
 |
 +-- package
      |
      +-- __init__.py
      |
      +-- subpackage
           |
           +-- __init__.py
           |
           +-- module.py
Run Code Online (Sandbox Code Playgroud)

init .py的内容

这两个package/__init__.pypackage/subpackage/__init__.py是空的.

内容 module.py

# file `package/subpackage/module.py`
attribute1 = "value 1"
attribute2 = "value 2"
attribute3 = "value 3"
# and as many more as you want...
Run Code Online (Sandbox Code Playgroud)

内容test.py(3个版本)

版本1

# file test.py
from package.subpackage.module import *
print attribute1 # OK
Run Code Online (Sandbox Code Playgroud)

这是导入东西的不良和不安全的方式(大量导入),但它有效.

版本2

# file test.py
import package.subpackage.module
from package.subpackage import module # …
Run Code Online (Sandbox Code Playgroud)

python import module package

72
推荐指数
2
解决办法
10万
查看次数

'--install-option =' - prefix'`和`--root`和`--target`之间的差异(python)差异

pip文件没有太多的字眼(我的眼睛),有关参数的处理源和目的地.

我经历了安装Sphinx的奇怪事情,pip3并且玩了可用的选项,似乎允许我在我想要的地方安装它(出于某些原因,我希望每个东西都在自己的目录中).我说"玩",不是说我没有读过文档也没试过--help,但是因为pip3 help install没有帮助,而且pip安装官方文档页面太短了,实际上说的不多于pip3 help install.

以下是完成的实验和观察结果.

第一个案例 --root

下载了当前的Sphinx存储库tarball,将其解压缩,进入新创建的目录并执行:

pip3 install --root /home/<user-name>/apps/sphinx -e .
Run Code Online (Sandbox Code Playgroud)

我虽然这是相同的--prefix,因为没有--prefix明显可用的选项.令我惊讶的是,它将命令安装在binPython3目录中(也在本地安装在它自己的目录中)和库目录中的一些东西,奇怪的是,而不是/home/<user-name>/apps/sphinx目录,我得到一个/home/<user-name>/apps/sphinx/home/<user-name>/apps/sphinx/…:它附加了指定的路径对自己.

特别是最后一点是否有意义?目的是--root什么?

第二种情况 --target

然后我,如果它不是--root,那可能是--target,所以我做了(清理后):

pip3 install --target /home/<user-name>/apps/sphinx -e .  
Run Code Online (Sandbox Code Playgroud)

它没有用,抱怨一个未被承认的--home选项.

--home它抱怨的是什么(我没有指明),究竟是--target什么?

第三种情况 --install-option='--prefix=…'

在WebO搜索和StackOverflow上的一个线程之后,我尝试了这个:

pip3 install --install-option='--prefix=/home/<user-name>/apps/sphinx' -e .
Run Code Online (Sandbox Code Playgroud)

它只是抱怨它无法安装.pth文件而且我的问题出了问题PYTHONPATH,这可以通过添加变量定义来重新启动:

export PYTHONPATH=/home/<user-name>/apps/sphinx/lib/python3.4/site-packages …
Run Code Online (Sandbox Code Playgroud)

python pip

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

如何更新git浅层克隆?

背景

(对于tl; dr,请参阅下面的#questions)

我有多个git存储库浅克隆.我使用的是浅克隆,因为它与脏克隆相比要小得多.每个人都克隆着做git clone --single-branch --depth 1 <git-repo-url> <dir-name>.

这工作正常,但我没有看到如何更新它.

当我用标签克隆时,更新没有意义,因为标签是冻结的时间点(据我所知).在这种情况下,如果我想更新,这意味着我想要通过另一个标签克隆,所以我只是rm -rf <dir-name>再次克隆.

当我克隆了主分支的HEAD然后想要更新它时,事情变得更加复杂.

我试过git pull --depth 1但是虽然我不想把任何东西推到远程存储库,它抱怨它不知道我是谁.

我试过了git fetch --depth 1,但是虽然它似乎更新了一些东西,但我检查它是不是最新的(远程存储库上的某些文件的内容与我克隆上的文件不同).

/sf/answers/1435601401/之后,我试过git fetch --depth 1; git reset --hard origin/master,但有两件事:第一,我不明白为什么git reset需要,第二,尽管文件似乎是最新的,但仍有一些旧文件,以及git clean -df不会删除这些文件.

问题

让克隆创建git clone --single-branch --depth 1 <git-repo-url> <dir-name>.如何更新它以达到相同的效果rm -rf <dir-name>; git clone --single-branch --depth 1 <git-repo-url> <dir-name>?或者是rm -rf <dir-name>再次克隆唯一的方法?

注意

这不是如何在不增加主要仓库大小的情况下更新浅层克隆子模块 …

git git-clone

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

SO_REUSEADDR和AF_UNIX

事实

在POSIX文档中,我看不到阻止对UNIX域套接字使用SO_REUSEADDR套接字选项的任何内容AF_UNIX.

但是,bind如果套接字节点已经存在,它总是会失败,并且似乎被忽略,并且似乎需要在调用之前首先取消链接文件系统上的套接字节点bind; 简而言之,它不重用地址.关于这个问题,网上有很多线程,没有解决方案.

这个问题

我不会坚持,如果它不起作用,它不起作用(至少在BSD和Linux系统上似乎都是一样的),并且只是有一个问题:这是正常的行为吗?有没有提示应该支持的指针,或者相反,任何指示它不应该支持?或者这是未指定的?请注意,问题在POSIX上下文中提出,而不是在任何特定平台上下文中.

我欢迎任何POSIX参考此事.

额外:一个小小的片段,不要盲目unlink知道什么

我在网上看到了一些线程,建议unlink任何节点之前的预期名称bind.我觉得它不安全,在这种情况下,应该只取消链接已经是套接字节点的节点:ex.取消链接名为的文本文件以mysocket重新创建同名的套接字节点可能是错误的.在这个目的中,这是一个小小的片段:

/* Create the socket node
 * ----------------------
 * Note `SO_REUSEADDR` does not work with `AF_UNIX` sockets,
 * so we will have to unlink the socket node if it already exists,
 * before we bind. For safety, we won't unlink an already existing node
 * which is not a socket node. 
 */

status = stat (path, …
Run Code Online (Sandbox Code Playgroud)

unix sockets posix

21
推荐指数
1
解决办法
6875
查看次数

Markdown和脚注:大多数自然格式缺失?

到目前为止Markdown和脚注

我指的是Markdown: daringfireball.net上的语法,它似乎是Markdown语法的主要来源.

众所周知,Markdown基于邮件和新闻组中已有的格式.在邮件和新闻组中,我经常看到这样的内容用于脚注和转发引用:

Blah, blah [1] blah, blah.

[1] http://somesite.com/somepage.html#someanchor
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,这种非常常见的格式不是主要Markdown参考的一部分.它只知道如下:

Blah, blah [some title][id] blah, blah.

[id]: http://somesite.com/somepage.html#someanchor
Run Code Online (Sandbox Code Playgroud)

我从来没有在新闻组或邮件列表中看到任何使用过这种情况,而前者非常普遍.

我可以找到一种名为PHP Markdown Extra的东西,它有更接近常见的自发用法,但足够不同:

Blah, blah [^id] blah, blah.

[id]: http://somesite.com/somepage.html#someanchor
Run Code Online (Sandbox Code Playgroud)

更近,但我仍然没有看到有人在新闻组或邮件中使用它.

这个问题

我想知道为什么这么多常见用法不是主要降价参考的一部分,甚至不是我所知道的任何变体的一部分.如果有人知道这个的原因,我很想知道这个原因.另一方面,如果我错过了一些东西,比如错过了一个非常常用的降价变体,并且在实践中包括了写脚注或转发参考的最自然方式(本文中介绍的第一个),那么我会喜欢知道它.

祝你有美好的一天.

markdown footnotes

14
推荐指数
2
解决办法
7073
查看次数

mod_fcgid:多线程FastCGI现在还是计划中的未来?

到目前为止的事实

根据" mod_fcgi不是mod_fastcgi的替代品 "和" mod_fcgid和多线程FastCGI应用程序的问题 ",mod_fcgid并不是设计为期望FastCGI服务器能够同时处理多个请求,即不期望FastCGI服务器是多线程的.

前者说:

它们都支持已发布的"FastCGI"协议,但它们如何控制它们的FastCGI服务器有很大不同.mod_fcgid可以快速消除FastCGI服务器并启动新服务器.

后者说:

似乎mod_fcgid不知道我的服务器是多线程的,并且能够处理多个请求.

这只是两个引用,其他地方也有一些.

连续问题

线程不仅仅是节省CPU和内存,而且避免了创建新进程的开销(创建一个线程比创建一个进程更轻),这可以通过硬件或操作系统性能来减轻; 这也是一个逻辑问题,不容易缓解:线程属于同一个进程,不仅是性能,还有逻辑,例如.进程无法共享线程可以共享的内容,因为进程是隔离运行的(模IPC,但不一样).

至少出于这个逻辑原因,可能会引发多线程FastCGI服务器的问题.FastCGI服务器可以保存上下文(在进程之间共享可能很大且成本很高),当它被设计为多线程服务器时,它对于所有请求处理程序是全局的.为每个并发请求分配新进程不允许更多地确保公共上下文.

这个问题

以上两个报价是否仍然正确(一个是2011年,另一个是2010年)?我在网上搜索了这个主题,但找不到任何相关内容.如果它仍然是真的,那么,它是否总是正确或是否有预期的计划mod_fcgid,要了解多线程FastCGI服务器并接受这些服务器可能被设计为处理多个并发请求?

apache multithreading fastcgi fcgid mod-fcgid

9
推荐指数
1
解决办法
2284
查看次数

32位Linux上的Syscall或sysenter?

从MS-DOS开始,我知道使用中断的系统调用.在旧论文中,我看到了int 80h在Linux上调用系统函数的参考.由于现在相当长的一段时间,我知道int 80h不赞成使用该syscall指令.但我不能让它在我的32位机器上工作.

这个问题

syscall指令仅用于64位平台吗?不是32位Linux使用syscall

样品测试

在我的32位Linux(Ubuntu Precise)上,该程序终止于核心转储:

global _start

_start:
        mov     eax, 4                ; 4 is write
        mov     ebx, 1                ; 1 is stdout
        mov     ecx, message          ; address of string
        mov     edx, length           ; number of bytes
        syscall

        mov     eax, 1                ; 1 is exit
        xor     ebx, ebx              ; return code 0
        syscall

message:
        db  10,"Hello, World",10,10
length  equ $ - message
Run Code Online (Sandbox Code Playgroud)

我试过sysenter而不是syscall,但它以同样的方式崩溃.

linux assembly 32-bit system-calls sysenter

8
推荐指数
2
解决办法
6401
查看次数

iOS 9 ATS和Firebase REST

我正在构建一个简单的iOS应用程序,使用REST API与Firebase对话.

基本上,我NSURLSession.sharedSession().dataTaskWithRequest用来连接

https://myusername.firebaseio.com/Object.json

该应用程序在iOS 8中运行良好.我能够通过GET/PUT/PATCH/DELETE来操作我的数据.但是由于iOS 9引入了ATS,我现在有了https错误:

NSURLSession/NSURLConnection HTTP加载失败

(kCFStreamErrorDomainSSL,CFNetwork SSLHandshake失败)

我完全了解Info.plist中的变通方法解决方案. 但是,我想在iOS 9中使用新的安全功能.

我检查了Firebase连接安全性(通过点击Chrome的绿色锁定按钮),它似乎与Apple的ATS要求兼容.

我的错误是因为我使用NSURLSession的方式?或者是因为Firebase安全设置?

PS:我测试了https://firebase.com并且NSURLSession连接了精细的w/o错误.我的应用程序也很简单,我不需要身份验证.

谢谢您的帮助.

https firebase ios9

7
推荐指数
1
解决办法
2961
查看次数

如何评论/记录Pylint内联选项的使用?

禁用Pylint检查或绕过其中一个警告,不应该没有明确的原因.我希望能够在我禁用它的地方评论这些原因; 到目前为止,没有成功.

举个例子,让一个只有构造函数和单个方法的类.Pylint有理由警告的事情,尽管可能有很多理由在本地禁用此警告.

class Foo(object):  # pylint: disable=R0903 --- Closure object

    def __init__(self, data):
        …

    def single_method(argument):
       …
Run Code Online (Sandbox Code Playgroud)

有了上述内容,Pylint不仅仍然警告"公共方法太少",而且还抱怨"糟糕的期权价值'R0903 ---关闭对象'".

这个问题有一个比这个简单的例子更广泛的理性(可能是我不知道的一种更好的方式来实现在Python闭包),我也希望能够发表评论大多数在线指令,在同一行,为了清晰和简单.顺便说一句,也可能有助于提醒选项的用途.作为一个例子,提醒# pylint: disable=R0903 --- Too few public methods(保持相同的例子).

用更少的话说:有没有办法评论Pylint内联指令?

python pylint

6
推荐指数
1
解决办法
749
查看次数

如何在不打补丁的情况下本地化python的argparse模块?

当消息的某些部分使用用户语言,而另一些消息使用英语时,本地化的命令行应用程序看起来很奇怪。

我不知道从源代码安装Python 3时是否搞砸了任何东西,似乎没有*.mo文件,因此argparse(整体上)不支持本地化。

该API似乎也没有提供本地化的方法。还是我错过了?

我可以打补丁argparse.py,但我不会打补丁,因为我希望它可移植,并且我不建议用户打补丁他们的Python安装。

用更少的问题提问:如何在argpase不修补Python标准库的情况下进行本地化?

相关问题:这可能吗?

python localization argparse

6
推荐指数
1
解决办法
631
查看次数