小编kjo*_*kjo的帖子

如何在“没有名为 xyz 的模块”错误上获得更多诊断输出?

我在本地目录中有一个 django 项目,当我从本地 django 服务器运行它时可以正常工作,如

python manage.py runserver.py 8000
Run Code Online (Sandbox Code Playgroud)

但是,如果我克隆该项目所在的本地 git 存储库(并且是最新的),如下所示:

git clone my_django_project my_django_project_clone
Run Code Online (Sandbox Code Playgroud)

我从克隆的目录中尝试了上面相同的命令,服务器立即失败:

Error: No module named xyz
Run Code Online (Sandbox Code Playgroud)

服务器根本不产生其他输出,即使我使用-v 3标志运行它。

有没有办法获得更多关于为什么这个(据说)工作 django 站点的相同克隆失败的诊断信息?

python django

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

如何在警告时自动切换到调试模式?

我想调试一个在代码执行过程中发生的警告.

一个简单的断点不会这样做,因为在第一次警告发生之前,导致警告的行会在没有警告的情况下执行数百万次.

此外,发生这种情况的行是在库代码中(更准确地说,在中pandas/core/common.py),所以我的首选是根本不修改代码.

我只想在发出警告时立即停止程序的执行,并在此时检查堆栈,或者使用pdb或使用ipdb.

有没有办法配置调试器在发出警告时自动进入单步模式?

python ipython pdb ipdb

5
推荐指数
2
解决办法
1108
查看次数

如何使用嵌套闭包作为List :: Util :: reduce的第一个参数?

注意:这个问题中的闭包只是一个方便的例子; 我实际使用的那个比这复杂得多.IOW,请忽略这个关闭的细节; 重要的是AFAICT,它指的是父范围内的词汇变量.


我想重新定义foo下面的sub ,以便调用中的第一个参数List::Util::reduce替换为对嵌套闭包的引用.

use strict;
use warnings FATAL => 'all';
use List::Util;

sub foo {
  my ( $x, $y ) = @_;
  return List::Util::reduce { $y->[ $b ]{ $x } ? $a + ( 1 << $b ) : $a } 0, 0 .. $#$y;
}
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试是这样的:

sub foo {
  my ( $x, $y ) = @_;
  sub z {
    our ( $a, $b );
    return exists $y->[ $b ]{ $x } ? $a …
Run Code Online (Sandbox Code Playgroud)

perl closures perl5

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

提交时`.git/CHERRY_PICK_HEAD`有什么区别?

注意:这是对我之前的帖子(现已删除)的改写。重新措辞旨在为帖子提供不同的重点。


运行后git cherry-pickgit报告有冲突。我解决了冲突,然后跑了git cherry-pick --continue。此时,$GIT_EDITOR弹出一个COMMIT_EDITMSG缓冲区,其中预先填充了精选提交的原始消息以及一些附加信息,其中包括警告:

# It looks like you may be committing a cherry-pick.
# If this is not correct, please remove the file
#   .git/CHERRY_PICK_HEAD
# and try again.
Run Code Online (Sandbox Code Playgroud)

我检查了如果我“删除”(实际上只是暂时重命名).git/CHERRY_PICK_HEAD文件会发生什么。这产生的直接外部影响是|CHERRY-PICKING从我的git-aware 提示中删除指示。

除了我的提示中的这一变化,以及COMMIT_EDITMSG缓冲区中预先填充的信息可能存在一些差异之外,在有或没有.git/CHERRY_PICK_HEAD文件的情况下执行提交会有什么区别?


更准确地说,我试图在这里比较两种情况。

在第一个场景中,我运行

% git cherry-pick --continue
Run Code Online (Sandbox Code Playgroud)

...并且(无视前面引用的警告)我像往常一样继续提交。

在第二种情况下,我运行

% rm .git/CHERRY_PICK_HEAD
% git commit
Run Code Online (Sandbox Code Playgroud)

...并像往常一样继续提交。

(假设我在两种情况下都使用相同的提交消息。)

这两种情况的最终结果会有什么不同?

git cherry-pick git-cherry-pick

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

获取CPAN中可用包名称的最全面列表的最简单方法是什么?

假设,作为一个私人项目,我已经实现了一个Perl软件包,并对其进行了正式和日常使用的测试.我发现该软件包非常有用且足够坚固,可以将其提交给CPAN.

到目前为止,由于软件包已经是一个私有项目,我并没有过多担心软件包的名称,但是现在我想提交给CPAN,但是,我希望软件包的名称能够很好地适应生态包名称已在CPAN中.

为了为我的包找到合适的"CPAN名称",我将不得不检查所有这些包名的全面列表1.

在CPAN中获取这些包名称的最简单方法是什么?


ObPedantry

(如果上面的问题对你来说已经足够清楚了,你可以放心地忽略下面的内容.)

我不认为我可以通过"包名称"在技术上正确定义我的意思,所以让我至少给出一个"操作定义".

例如,如果是单线

$ perl -MFoo::Bar::Baz -c -e 1
Run Code Online (Sandbox Code Playgroud)

失败并以错误开头

Can't locate Foo/Bar/Baz.pm in @INC ...
Run Code Online (Sandbox Code Playgroud)

...,但在从CPAN安装一些发行版之后,相同的oneliner成功了

-e syntax OK
Run Code Online (Sandbox Code Playgroud)

...然后我会说" Foo::Bar::Baz是CPAN中的包名".

(我们可以分开包装/模块的区别,并考虑区分重要的情况,但请不要.)

此外,如果在检查列表之后这个问题询问我发现,一方面,CPAN中实际上有许多以前缀开头的着名包名Foo::Bar::,而另一方面,没有(或可忽略的少)从前缀开始Fubar::,这将是我在将其提交给CPAN之前更改我的Fubar::Frobozz包名称的充分理由Foo::Bar::Frobozz.


1当然,在检查这样的列表之后,我可能会发现我的软件包没有添加足够的新功能,相对于CPAN中已有的功能,以保证我的软件包最终提交给CPAN.

perl cpan

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

如何使用NA以外的值填充merge(...,all = TRUE,...)中的缺失值?

简而言之:我正在寻找一种通用方法来填充缺失值,merge(..., all = TRUE, ...)而不是使用常量NA.


假设

z <- merge(x, y, all = TRUE, ...)
Run Code Online (Sandbox Code Playgroud)

...那我想在所有缺失值z(从任一丢失的钥匙导致xy将填充(非)NA)不变FILL_VALUE.


首先,简单的案例:

FILL_VALUE <- "-"

x <- data.frame(K=1001:1005,
                I=3:7,
                R=c(0.1, 0.2, 0.3, 0.4, 0.5),
                B=c(TRUE, FALSE, TRUE, FALSE, TRUE),
                C=c(0.1+0.2i, 0.3+0.4i, 0.5+0.6i, 0.7+0.8i, 0.9+1.0i))

y <- data.frame(K=1001:1003,
                S1=c("a", "b", "c"),
                S2=c("d", "e", "f"),
                stringsAsFactors = FALSE)

z <- merge(x, y, all = TRUE, by = "K")

## > z
## …
Run Code Online (Sandbox Code Playgroud)

merge r outer-join dataframe na

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

相当于 IPython 的 Spyder 运行文件吗?

我怎样才能在IPython中获得类似Spyder的runfile功能?(我在 Python 2.7.9 下使用 IPython v.4.1.2。)

python ipython

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

在 `git checkout stash@{0} -- .`

如果我运行(例如)

git checkout stash@{0} -- .
Run Code Online (Sandbox Code Playgroud)

...任何相对于索引修改的隐藏文件都会显示为暂存的。这是一个简单的例子:

% git init demo
Initialized empty Git repository in /tmp/demo/.git/
% cd demo
% date >> file.txt
% git add file.txt
% git commit --allow-empty-message -m ''
[master (root-commit) e46cee5] 
 1 file changed, 1 insertion(+)
 create mode 100644 file.txt
% date >> file.txt
% git stash
Saved working directory and index state WIP on master: e46cee5 
HEAD is now at e46cee5 
% git checkout stash@{0} -- .
% git status
On branch master …
Run Code Online (Sandbox Code Playgroud)

git

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

如何使用上下文管理器支持可选的 stdin/stdout?

假设我想实现一个具有以下签名的 Python 脚本:

myscript.py INPUT OUTPUT
Run Code Online (Sandbox Code Playgroud)

...其中INPUT和分别OUTPUT代表脚本将读取和写入的文件的路径。

用于实现具有此类签名的脚本的代码可能具有以下构造:

with open(inputarg, 'r') as instream, open(outputarg, 'w') as outstream:
    ...
Run Code Online (Sandbox Code Playgroud)

...这里的inputarg和变量保存通过其和命令行参数outputarg传递给脚本的文件路径(字符串) 。INPUTOUTPUT


到目前为止没有什么特别或不寻常的事情。

但现在,假设对于脚本的版本 2,我想为用户提供-为其一个(或两个)参数传递特殊值的选项,以指示脚本应分别读取stdin和写入stdout

换句话说,我希望以下所有形式都能产生相同的结果:

myscript.py INPUT OUTPUT
myscript.py   -   OUTPUT  <INPUT
myscript.py INPUT   -             >OUTPUT
myscript.py   -     -     <INPUT  >OUTPUT
Run Code Online (Sandbox Code Playgroud)

现在,with之前的说法已经不再适用。一方面,表达式open('-', 'r')oropen('-', 'w')都会引发异常:

FileNotFoundError: [Errno 2] No such file or directory: '-'
Run Code Online (Sandbox Code Playgroud)

我无法想出一种方便的方法来扩展with上面基于 …

python stdin stdout contextmanager

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

jupyterhub 的日志在哪里?

重要提示:我通过访问雇主的 jupyterhub 网站并登录来使用 Jupyter 笔记本。我实际上从未jupyterhub在命令行上运行该命令。

我提前提到这一点是因为我在 jupyterhub 上在线找到的很多信息都假设用户在某些时候jupyterhub在命令行上运行命令,但我从不按照公司的 SOP 这样做。请在发布答案时牢记这一点。


经过几个小时的故障排除和令人头疼的工作后,我刚刚发现,New在我的 jupyterhub 主页中展开按钮时显示的选项中没有显示特定的 conda 虚拟环境/内核的原因是kernel.json 中的 1 个字符拼写错误文件

就用户(我)而言,jupyterhub 的启动进展顺利。

事实上,这个小拼写错误导致了该候选内核的整个处理被默默地中止。

一个简单的警告就可以节省我大量的工作时间。

下一个最好的事情是能够检查 jupyterhub 在这种情况下可能产生的任何日志消息。


是否jupyterhub保留日志?

假设第一个问题的答案是“是”,我有几个后续问题:

  • 我怎样才能查看这个日志?
  • 有没有办法使该日志(如果存在)尽可能详细?
  • 是否可以将日志消息也直接显示在 Web 界面上?

jupyterhub

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