小编Zor*_*b29的帖子

python无法导入模块

我正在使用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)

python import pytest

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

错误:未为工具链“stable-x86_64-unknown-linux-gnu”安装“rust-analyzer”

我已按照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)

rust rust-analyzer

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

python imageio图像大小,而无需将图像加载到内存

我正在使用imageio和Python。它似乎比PIL和consorts具有更清洁的API,因此我想继续使用imageio而不是其他工具。

我知道如何获取图像大小:

height, width, channels = imageio.imread(filepath).shape
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以获取图像的大小,而无需将其完全加载到内存中?这应该是可能的,不是吗?至少对于一些格式(我想)在标题中具有图像大小?

python python-imageio

6
推荐指数
0
解决办法
823
查看次数

使用ffmpeg以高帧率从网络摄像头录制

我有一个网络摄像头(来自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)

ffmpeg video-capture

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

如何在 bash 的完整输出中使用颜色?

我使用的是 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应该\用作转义字符?

bash autocomplete colors

5
推荐指数
0
解决办法
392
查看次数

存储 scipy griddata 使用的权重以供重用

我试图将数据从非结构化网格M1插入到另一个非结构化网格M2。对于这一点,scipy.interpolate.griddata似乎不错。

但是,我需要多次从M1插值到M2,只更改数据而不是网格。我猜想,scipy.interpolate.griddata在从M1插入到M2时,它在内部定义了一些权重系数,这可能是计算的昂贵部分之一。

因此,我想避免每次都重新计算这些权重。有没有办法做到这一点?即,从一个非结构化网格多次插值到另一个非结构化网格,两者都保持不变,避免重新计算scipy.interpolate.griddata(或等效)的内部结构?

optimization interpolation scipy

4
推荐指数
1
解决办法
1110
查看次数

在python中将整个解释器设置为UTC

我想确保整个脚本默认仅使用 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。

python utc

3
推荐指数
1
解决办法
2106
查看次数

在 bash 中使用 qrencode 和 zbarimg 编码/解码二维码中的二进制数据

我有一些二进制数据,我想用二维码编码,然后能够解码,所有这些都在 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

编辑 …

binary bash encode decode qr-code

2
推荐指数
1
解决办法
5002
查看次数

我如何使用 constexpr 逻辑?

我想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_2constexpr,则不允许我在if语句中更改其值。如果我没有constexprif语句体之前声明变量,那么它(正如预期的那样)不是在if语句之外定义的。

c++ constexpr

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

与 tmux 窗格交互,就像它是一个 vim 缓冲区一样

我经常使用 tmux 和 vim。

我一直想做但还没有找到方法的一件事是能够与 tmux 窗格交互,就好像它是 vim 缓冲区一样。我不知道这是否可能(?)。

基本上,我想要的是:

  • 1 在 tmux 中做一些工作
  • 2 使用 tmux 快捷方式
  • 3 现在我的 tmux 应该像 vim 一样工作,特别是能够导航、复制、粘贴

我可以使用 Ctrl-B + [ 来关闭 2) 和 3),这可以让我浏览我的 tmux 历史记录,但是:

  • 我无法使用通常的 vim 导航,我必须使用箭头
  • 我不能轻易地例如拉文本等

知道 1)这是否可行,2)如何做到?

vim tmux

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