小编Joh*_*nal的帖子

Python中的相对导入3

我想从同一目录中的另一个文件导入一个函数.

有时它适用于我,from .mymodule import myfunction但有时我会得到:

SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

有时它适用from mymodule import myfunction,但有时我也得到:

SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

我不明白这里的逻辑,我找不到任何解释.这看起来完全随机.

有人可以向我解释这一切背后的逻辑是什么吗?

python python-import python-3.x

589
推荐指数
16
解决办法
38万
查看次数

Python 3中的相对导入不起作用

我有以下目录:

mydirectory
??? __init__.py
??? file1.py 
??? file2.py
Run Code Online (Sandbox Code Playgroud)

我有一个在file1.py中定义的函数f.

如果,在file2.py中,我这样做

from .file1 import f
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

SystemError:父模块''未加载,无法执行相对导入

为什么?以及如何使它工作?

python import module

52
推荐指数
3
解决办法
5万
查看次数

mysql-connector-python,mysql-connector-python-rf和mysql-connector-repackaged之间有什么区别?

我想使用mysql-connectorpython 3 的库.我可以使用pymysql,但mysql-connector已经有一个连接池实现,而pymysql似乎没有.所以这对我来说写的代码就少了.

但是,当我这样做的时候

$ pip3 search mysql-connector
Run Code Online (Sandbox Code Playgroud)

我发现这3个库可用:

mysql-connector-repackaged     - MySQL driver written in Python
mysql-connector-python-rf      - MySQL driver written in Python
mysql-connector-python         - MySQL driver written in Python
Run Code Online (Sandbox Code Playgroud)

这非常令人困惑.谁知道我应该使用哪一个?为什么?

谢谢你的帮助.

python mysql pip python-3.x mysql-connector-python

22
推荐指数
3
解决办法
7360
查看次数

使用clojure.math.numeric-tower或任何库

我试着学习一点Clojure,因为语言很好看.但似乎没有关于如何安装/使用库的信息,例如clojure.math.numeric-tower.

现在我通过在我的Linux shell中键入它来运行REPL:

java -cp ~/Clojure/clojure-1.3.0/clojure-1.3.0.jar  clojure.main
Run Code Online (Sandbox Code Playgroud)

我下载了数字塔罐,并把它放在任何地方.我已经以各种可能的方式修改了-cp选项.我把numeric_tower.clj文件放在任何地方.它仍然无法正常工作.

使用这些库的方法是什么?

math clojure

19
推荐指数
1
解决办法
4066
查看次数

Rust中&符号'&'和星'''符号的含义

尽管通读文件,我比较困惑的含义&*象征拉斯特,以及更普遍的关于什么是防锈参考准确.

在这个例子中,它似乎类似于C++引用(即,使用时自动解除引用的地址):

fn main() {
    let c: i32 = 5;
    let rc = &c;
    let next = rc + 1;
    println!("{}", next); // 6
}
Run Code Online (Sandbox Code Playgroud)

但是,以下代码的工作方式完全相同:

fn main() {
    let c: i32 = 5;
    let rc = &c;
    let next = *rc + 1;
    println!("{}", next); // 6
}
Run Code Online (Sandbox Code Playgroud)

*在C++中使用取消引用引用是不正确的.所以我想了解为什么在Rust中这是正确的.

到目前为止,我的理解是,*在Rust引用前插入取消引用它,但是*无论如何都是隐式插入的,所以你不需要添加它(在C++中,它是隐式插入的,如果你插入它,你会得到一个编译错误).

但是,这样的东西不能编译:

fn main() {
    let mut c: i32 = 5;
    let mut next: i32 = 0;
    {
        let rc = …
Run Code Online (Sandbox Code Playgroud)

reference ampersand dereference rust

16
推荐指数
3
解决办法
4399
查看次数

导入Python线程内部

我有一些使用交互式加载python模块的函数 __import__

我最近偶然发现了一篇关于Python中"导入锁定"的文章,即专门针对导入的锁(不仅仅是GIL).但文章很旧,所以也许这不再是真的了.

这让我想知道在线程中导入的做法.

  1. import/ __import__线程安全的?
  2. 他们可以创造死锁吗?
  3. 它们是否会在线程应用程序中导致性能问题?

编辑2012年9月12日

感谢Soravux的出色回复.因此导入是线程安全的,我不担心死锁,因为__import__我的代码中使用的函数不会相互调用.

您是否知道即使已经导入模块也会获得锁定?如果是这种情况,我应该查看sys.modules,以便在调用之前检查模块是否已经导入__import__.

当然,这不应该在CPython中产生很大的不同,因为无论如何都有GIL.但是它可能会在其他实现上产生很大的不同,比如Jython或stackless python.

编辑2012年9月19日

关于Jython,这是他们在文档中所说的:

http://www.jython.org/jythonbook/en/1.0/Concurrency.html#module-import-lock

但是,Python确实定义了一个模块导入锁,它由Jython实现.只要输入任何名称,就会获得此锁定.无论导入是通过import语句,等效__import__内置函数还是相关代码,都是如此.重要的是要注意,即使已导入相应的模块,仍将获取模块导入锁定(如果只是短暂的).

因此,在进行导入之前检查sys.modules似乎是有意义的,以避免获取锁定.你怎么看?

python concurrency multithreading locking python-import

14
推荐指数
1
解决办法
5946
查看次数

如何在Git中解开所有已删除的文件

在Git中删除所有已删除文件的命令是什么?

我知道有一个命令要通过名称来取消文件(git rm myfile)

但是我想要删除所有已删除的文件,而不关心它们的命名方式.

git version-control

13
推荐指数
1
解决办法
8095
查看次数

zip缩小0%?为什么没有压缩?

我正在尝试压缩包含4个大文件的文件夹的内容,非常非常相似.所以我希望减小尺寸.

这是我在linux/fedora上使用的命令:

zip -9 myarchive.zip -r myfolder -P mypassword
Run Code Online (Sandbox Code Playgroud)

我收到了回复:

adding: myfolder/ (stored 0%)
adding: myfolder/Program1.exe (deflated 0%)
adding: myfolder/Program2.exe (deflated 0%)
adding: myfolder/Program3.exe (deflated 0%)
adding: myfolder/Program4.exe (deflated 0%)
Run Code Online (Sandbox Code Playgroud)

然后我得到了存档,这与我的原始文件夹大小相同.

似乎根本没有发生压缩.为什么?

unix linux compression zip command

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

我应该为MySQL使用什么python 3库?

据我所知MySQLdb仍然没有移植到Python 3.

在pypy上似乎有另一个名为PyMySQL的库但是python 3的安装看起来很奇怪(运行.sh脚本?).还有一个名为PyMySQL3的库,但我无法找到有关它的信息.

如今,在Python 3中使用MySQL的首选方法是什么?

是否有一个优雅的解决方案,可以使用pip或python setup.py install命令安装?

python mysql python-3.x

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

sqlite 触发器会触发其他触发器吗?

我正在尝试在 sqlite 中实现与“ON UPDATE CURRENT_TIMESTAMP”MySQL 功能等效的功能。我的想法是使用这样的触发器:

CREATE TRIGGER last_update_trigger
AFTER UPDATE
ON mytable
FOR EACH ROW
BEGIN
UPDATE mytable SET last_update = CURRENT_TIMESTAMP WHERE id = old.id;
END
Run Code Online (Sandbox Code Playgroud)

但这有一个问题。每次该表的记录发生更新时,触发器都会触发同一记录的新更新。这应该会一次又一次地触发触发器,从而导致更新的无限循环。

这真的会发生吗?我的触发器中的更新会再次触发触发器吗?我可以避免触发触发器内的触发器吗?

sqlite triggers timestamp sql-update

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