我正在使用Python编写一个包.我用virtualenv.我在virtualenv的.pth路径中设置了模块根目录的路径,这样我就可以在开发代码的同时导入包的模块并进行测试(问题1:这是一个好方法吗?).这工作正常(这是一个例子,这是我想要的行为):
(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ python
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from rc import ns
>>> exit()
(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ python tests/test_ns.py
issued command: echo hello
command output: hello
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用PyTest,我会收到一些导入错误消息:
(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ pytest
=========================================== test session starts ============================================
platform linux2 -- Python 2.7.12, pytest-3.0.5, py-1.4.31, pluggy-0.4.0
rootdir: /home/zz/Desktop/GitFolders/rc, inifile:
collected 0 items / 1 errors
================================================== ERRORS ==================================================
________________________________ ERROR collecting tests/test_ns.py ________________________________
ImportError while importing …
Run Code Online (Sandbox Code Playgroud) 我已按照https://rust-analyzer.github.io/manual.html#installation上的说明安装了 rust-analyzer :
\n\xe2\x9c\x94 ~> rustup component add rust-src\ninfo: component \'rust-src\' is up to date\n
Run Code Online (Sandbox Code Playgroud)\n但是,我得到:
\n\xe2\x9c\x94 ~> rust-analyzer -v\nerror: \'rust-analyzer\' is not installed for the toolchain \'stable-x86_64-unknown-linux-gnu\'\n
Run Code Online (Sandbox Code Playgroud)\n我也尝试安装这个特定的工具链:
\n\xe2\x9c\x98-1 ~> rustup component add rust-src --toolchain stable-x86_64-unknown-linux-gnu\ninfo: component \'rust-src\' is up to date\n
Run Code Online (Sandbox Code Playgroud)\n但我仍然遇到同样的错误。
\n我在互联网上查找了错误,并在 https://github.com/rust-lang/rust-analyzer/issues/14776找到了示例讨论。但是,检查可执行位置会返回
\n\xe2\x9c\x94 ~> which rust-analyzer\n/home/jrmet/.cargo/bin/rust-analyzer\n
Run Code Online (Sandbox Code Playgroud)\n这完全在我的路径之内。另外,我可以这样做:
\n\xe2\x9c\x94 ~> /home/jrmet/.cargo/bin/rust-analyzer\nerror: \'rust-analyzer\' is not installed for the toolchain \'stable-x86_64-unknown-linux-gnu\'\n
Run Code Online (Sandbox Code Playgroud)\n我还一直在与其他目标合作:
\n\xe2\x9c\x94 ~> rustup …
Run Code Online (Sandbox Code Playgroud) 我正在使用imageio和Python。它似乎比PIL和consorts具有更清洁的API,因此我想继续使用imageio而不是其他工具。
我知道如何获取图像大小:
height, width, channels = imageio.imread(filepath).shape
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以获取图像的大小,而无需将其完全加载到内存中?这应该是可能的,不是吗?至少对于一些格式(我想)在标题中具有图像大小?
我有一个网络摄像头(来自Logitech的Brio 4K流模型)可以在Ubuntu 16.04的guvcview中以1280x720和60 fps的分辨率录制。然后,我使用视频编解码器“原始摄像机输入”。这可以正常工作,并且符合预期,结果是在所需分辨率下可以播放60 fps的视频。
但是,我需要使用命令行而不是GUI进行记录。guvcview GUI在我的机器上崩溃(分段错误,此错误之前已由其他用户报告过),因此我想改用ffmpeg。
不幸的是,当我使用命令(在终端中)时:
ffmpeg -i /dev/video1 -framerate 60 -video_size 1280x720 out.mkv
Run Code Online (Sandbox Code Playgroud)
我只能得到约30 fps的输出。当然这不是由于相机本身(在guvcview中以60 fps的速度工作),但是我不明白为什么当我明确要求60 fps时为什么会获得30 fps。它还以30 fps的速度记录ffmpeg的输出:
Metadata:
encoder : Lavf56.40.101
Stream #0:0: Video: h264 (libx264) (H264 / 0x34363248), yuv422p, 1280x720, q=-1--1, 30 fps, 1k tbn, 30 tbc
Run Code Online (Sandbox Code Playgroud)
有什么建议可以解决这个问题并使用ffmpeg以60 fps录制吗?
注意:我也尝试过类似的操作,但结果相同(仅30 fps):
ffmpeg -f video4linux2 -i /dev/video1 -framerate 60.0 -video_size 1280x720 out.mkv
Run Code Online (Sandbox Code Playgroud)
编辑1感谢您在注释中的帮助:参数顺序很重要。现在使用:
ffmpeg -framerate 60 -video_size 1280x720 -i /dev/video1 out.mkv
Run Code Online (Sandbox Code Playgroud)
我仍然达到30 fps左右,并出现一条新的(可能更容易理解的)警告消息:
[video4linux2,v4l2 @ 0x1ddc4e0] The driver changed the time per frame …
Run Code Online (Sandbox Code Playgroud) 我使用的是 bash 4.4。我启用了颜色,并且在命令后点击例如双选项卡时我会看到颜色ls
(不同颜色的文件和文件夹)。我的 ~/.inputrc 中有set colored-stats on
设置。
但是我仍然无法在complete
命令中使用颜色。例如,我有以下测试文件:
colored_output="\033[0;31mPaul\033[0m"
echo -e $colored_output # this prints 'Paul' in red
_hello () {
COMPREPLY=()
COMPREPLY+=("Bob")
COMPREPLY+=("Alice")
COMPREPLY+=("${colored_output}")
}
complete -o nosort -o filenames -F _hello hello
Run Code Online (Sandbox Code Playgroud)
采购时,Paul
应以红色印刷。但是,当在 hello 上点击双选项卡时,事情不起作用(所有这些都以默认终端颜色显示):
$ hello [hitting TAB TAB now]
Bob Alice \033[0;31mPaul\033[0m
Run Code Online (Sandbox Code Playgroud)
知道如何在 TAB 自动完成后获得颜色吗?我想我需要说complete
应该\
用作转义字符?
我试图将数据从非结构化网格M1插入到另一个非结构化网格M2。对于这一点,scipy.interpolate.griddata
似乎不错。
但是,我需要多次从M1插值到M2,只更改数据而不是网格。我猜想,scipy.interpolate.griddata
在从M1插入到M2时,它在内部定义了一些权重系数,这可能是计算的昂贵部分之一。
因此,我想避免每次都重新计算这些权重。有没有办法做到这一点?即,从一个非结构化网格多次插值到另一个非结构化网格,两者都保持不变,避免重新计算scipy.interpolate.griddata
(或等效)的内部结构?
我想确保整个脚本默认仅使用 UTC。知道该怎么做吗?我一直在寻找解决方案,但不知何故没有发现任何有效的方法。我真正想要的只是确保:
import datetime
# SOME CODE HERE
print(datetime.datetime.fromtimestamp(0).strftime('%Y-%m-%d %H:%M:%S'))
Run Code Online (Sandbox Code Playgroud)
在任何机器上打印 1970-01-01 00:00:00,没有更多麻烦,并且一切都被视为 UTC。
我有一些二进制数据,我想用二维码编码,然后能够解码,所有这些都在 bash 中。搜索后,看起来我应该qrencode
用于编码和zbarimg
解码。经过一些故障排除后,我仍然无法解码我编码的内容
知道为什么吗?目前我最接近解决方案的是:
$ dd if=/dev/urandom bs=10 count=1 status=none > data.bin
$ xxd data.bin
00000000: b255 f625 1cf7 a051 3d07 .U.%...Q=.
$ cat data.bin | qrencode -l H -8 -o data.png
$ zbarimg --raw --quiet data.png | xxd
00000000: c2b2 55c3 b625 1cc3 b7c2 a051 3d07 0a ..U..%.....Q=..
Run Code Online (Sandbox Code Playgroud)
看起来我不是很远,但仍然有一些东西。
编辑 1:一个可能的解决方法是使用 base64 包装,如@leagris 的回答中所述。
编辑 2:使用 base64 编码使消息的大小加倍。我首先使用二进制文件的原因是为了节省大小,所以我想避免这种情况。不接受@leagris 的答案,因为我希望它是“完整的二进制文件”,抱歉。
编辑 3:截至 2020 年3 月 3 日,这似乎是一个众所周知的问题,zbarimg
解决此问题的拉取请求正在进行中:
https://github.com/mchehab/zbar/pull/64
编辑 …
我想constexpr
在一些代码中实现一些逻辑。我能够毫无问题地编译和执行此代码。
#include <iostream>
int main(){
std::cout << "Starting c++ main" << std::endl;
constexpr int val_1 = 100;
int val_2;
if constexpr (val_1 == 100){
val_2 = 10;
}
else if constexpr (val_1 == 200){
val_2 = 20;
}
std::cout << val_2 << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
但真的,val_2
应该也是一个constexpr
。我怎样才能val_2
成为一个constexpr
?我尝试了几件事,但没有成功。如果我声明val_2
为constexpr
,则不允许我在if
语句中更改其值。如果我没有constexpr
在if
语句体之前声明变量,那么它(正如预期的那样)不是在if
语句之外定义的。
我经常使用 tmux 和 vim。
我一直想做但还没有找到方法的一件事是能够与 tmux 窗格交互,就好像它是 vim 缓冲区一样。我不知道这是否可能(?)。
基本上,我想要的是:
我可以使用 Ctrl-B + [ 来关闭 2) 和 3),这可以让我浏览我的 tmux 历史记录,但是:
知道 1)这是否可行,2)如何做到?