我在本地目录中有一个 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 站点的相同克隆失败的诊断信息?
我想调试一个在代码执行过程中发生的警告.
一个简单的断点不会这样做,因为在第一次警告发生之前,导致警告的行会在没有警告的情况下执行数百万次.
此外,发生这种情况的行是在库代码中(更准确地说,在中pandas/core/common.py),所以我的首选是根本不修改代码.
我只想在发出警告时立即停止程序的执行,并在此时检查堆栈,或者使用pdb或使用ipdb.
有没有办法配置调试器在发出警告时自动进入单步模式?
注意:这个问题中的闭包只是一个方便的例子; 我实际使用的那个比这复杂得多.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) 注意:这是对我之前的帖子(现已删除)的改写。重新措辞旨在为帖子提供不同的重点。
运行后git cherry-pick,git报告有冲突。我解决了冲突,然后跑了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)
...并像往常一样继续提交。
(假设我在两种情况下都使用相同的提交消息。)
这两种情况的最终结果会有什么不同?
假设,作为一个私人项目,我已经实现了一个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.
简而言之:我正在寻找一种通用方法来填充缺失值,merge(..., all = TRUE, ...)而不是使用常量NA.
假设
z <- merge(x, y, all = TRUE, ...)
Run Code Online (Sandbox Code Playgroud)
...那我想在所有缺失值z(从任一丢失的钥匙导致x或y将填充(非)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) 我怎样才能在IPython中获得类似Spyder的runfile功能?(我在 Python 2.7.9 下使用 IPython v.4.1.2。)
如果我运行(例如)
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) 假设我想实现一个具有以下签名的 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上面基于 …
重要提示:我通过访问雇主的 jupyterhub 网站并登录来使用 Jupyter 笔记本。我实际上从未jupyterhub在命令行上运行该命令。
我提前提到这一点是因为我在 jupyterhub 上在线找到的很多信息都假设用户在某些时候jupyterhub在命令行上运行命令,但我从不按照公司的 SOP 这样做。请在发布答案时牢记这一点。
经过几个小时的故障排除和令人头疼的工作后,我刚刚发现,New在我的 jupyterhub 主页中展开按钮时显示的选项中没有显示特定的 conda 虚拟环境/内核的原因是kernel.json 中的 1 个字符拼写错误文件。
就用户(我)而言,jupyterhub 的启动进展顺利。
事实上,这个小拼写错误导致了该候选内核的整个处理被默默地中止。
一个简单的警告就可以节省我大量的工作时间。
下一个最好的事情是能够检查 jupyterhub 在这种情况下可能产生的任何日志消息。
是否jupyterhub保留日志?
假设第一个问题的答案是“是”,我有几个后续问题: