小编Chr*_*ris的帖子

在Python中获取大文件的MD5哈希值

我使用了hashlib(它取代了Python 2.6/3.0中的md5),如果我打开一个文件并将其内容放入hashlib.md5()函数中,它工作正常.

问题在于非常大的文件,它们的大小可能超过RAM大小.

如何在不将整个文件加载到内存的情况下获取文件的MD5哈希值?

python md5 hashlib

183
推荐指数
7
解决办法
11万
查看次数

为Homebrew设置Github API令牌

您需要设置HOMEBREW_GITHUB_API_TOKEN自制,避免速率限制,但你怎么把它添加到自制的配置?

homebrew github

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

是否与numpy.pad()函数相反/相反?

有没有一个功能正在做什么numpy.pad()呢?

我正在寻找的是一个(统一)减少每个方向上的numpy数组(矩阵)的尺寸的函数.我试图numpy.pad()用负值调用,但它给出了一个错误:

import numpy as np

A_flat = np.array([0,1,2,3,4,5,6,7,8,9,10,11])
A = np.reshape(A_flat, (3,2,-1))

#this WORKS:
B = np.pad(A, ((1,1),(1,1),(1,1)), mode='constant')

# this DOES NOT WORK:
C = np.pad(B, ((-1,1),(1,1),(1,1)), mode='constant')
Run Code Online (Sandbox Code Playgroud)

错误: ValueError: ((-1, 1), (1, 1), (1, 1)) cannot contain negative values.

我理解这个函数numpy.pad()不带负值,但是有没有numpy.unpad()类似的东西?

python numpy padding

10
推荐指数
3
解决办法
6615
查看次数

如何使用fork()和exec()在Mac OS上创建进程

我正在研究一个相对简单,独立的" 流程启动器 ",我希望能够在Windows(XP,Vista,7),Linux(Ubuntu 10.10)以及Mac OS X(10.6)上工作.Linux和Windows基本上都可以工作,但我在使用Mac版时遇到了一些麻烦.我希望fork()exec()功能将工作在Mac OS同样的方式,因为他们在Linux下工作.所以我的第一个问题是:

  1. 我应该使用它们在Mac上创建进程还是要使用任何特定于平台的功能?

我当前的代码(在Linux下工作正常)来调试它看起来像这样:

pid_t processId = 0;
if (processId = fork()) == 0)
{
    const char * tmpApplication = "/Path/to/TestApplication";

    int argc = 1;
    char * argv[argc + 1];

    argv[0] = tmpApplication;
    argv[1] = NULL;

    execv(tmpApplication, argv);
}else
{
    //[...]
}
Run Code Online (Sandbox Code Playgroud)

不知道这是否可以在Mac OS X下运行,因为我的子进程根本没有启动,而没有出现错误.

谢谢!

c macos fork process exec

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

(如何)我可以在jupyter(ipython)中并排运行python 2.7和3.4笔记本吗?

我想配置jupyter以允许我在两个不同的笔记本中同时并行运行python 2.7和3.4内核(或者甚至可以在一个笔记本中从一个切换到另一个).

(1)这可能吗?

我问,因为有人建议在IPython Notebook同时使用Python 2.x和Python 3.x,这是可能的,但没有提供关于这将如何工作的详细答案.

您还可以在https://try.jupyter.org中看到它看起来非常可行(您甚至可以从一个python 2内核切换到python 3内核).所以我觉得合理地假设它确实可行(但如果我错了请纠正我).

(2)这是怎么做到的?

以前的答案(例如在Open IPython Notebook 2.7和3.4并行中)建议在两个不同的端口启动两个不同的 ipython笔记本服务器.这当然是完全合乎逻辑的和可能的,但回答我的问题.

我设法安装ipythonpython 2和3.然后我jupyter通过在每个相应的python环境中调用以下内容来显示两个内核:

ipython kernelspec install-self

kernel.json为我创建了文件,我现在可以选择其中任何一个来创建一个新的笔记本jupyter.kernel.jsonpython 2的示例:

{
 "display_name": "Python 2", 
 "language": "python", 
 "argv": [
  "/usr/local/opt/python/bin/python2.7", 
  "-m", 
  "ipykernel", 
  "-f", 
  "{connection_file}"
 ]
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我jupyter从python 2环境(已$PYTHONPATH定义)开始时,我只能运行python 2内核(另一个内核在打开相应的笔记本时会崩溃).同样,当我jupyter从python 3环境(已$PYTHONPATH定义)开始.这通常对我有意义,但我想知道如何启动或配置jupyter允许两个内核从同一个jupyter实例运行,并仍然指定我自己的特定的$PYTHONPATHs来加载我的包.

我认为这是我的实际问题 …

python python-2.7 python-3.x ipython-notebook jupyter

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

如何在自制软件的mpi支持下构建提升?

根据这篇文章(https://github.com/mxcl/homebrew/pull/2953),标志" --with-mpi"应该为相关的自制软件公式启用boost_mpi构建支持,所以我试图通过自制软件安装boost如下:

brew install boost --with-mpi
Run Code Online (Sandbox Code Playgroud)

但是,实际的boost mpi库尚未构建且无法找到.目前正在做一些工作,根据:https://github.com/mxcl/homebrew/pull/15689

总之,我目前可以构建boost,但似乎--with-mpi忽略了" "标志.有人可以检查一下,如果我能在Mac OS X Mountain Lion(10.8)上构建boost(支持mpi)吗?

(详细)输出生成以下行:

MPI auto-detection failed: unknown wrapper compiler mpic++
Please report this error to the Boost mailing list: http://www.boost.org
You will need to manually configure MPI support.

warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can …
Run Code Online (Sandbox Code Playgroud)

macos homebrew boost mpi openmpi

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

我如何使用(一个配置文件)包含编译时依赖 #defines 的外部头文件?

想象一下,我正在编译(一个静态)库libfoo.a,它提供了一个头文件foo.h. 我会链接到我的应用程序APPlibfoo.a#include <foo.h>在我的源代码。libfoo使用CMake作为具有用户定义的变量,诸如构建系统BUILD_WITH_OPTION_BAR被传递作为定义来编译器:

ADD_DEFINITIONS(BUILD_WITH_OPTION_BAR)

在里面foo.h我们会找到#ifdef使用这个选项的声明:

#ifdef BUILD_WITH_OPTION_BAR
   typedef long long int fooInt;
#else
   typedef int fooInt;
#endif
Run Code Online (Sandbox Code Playgroud)

我的问题是:我怎么知道我的里面APPlibfoo.a是构建有或没有BUILD_WITH_OPTION_BAR

换句话说:我必须在何时何地BUILD_WITH_OPTION_BAR在我的APP?

我的基本认识是,图书馆libfoo应该提供某种形式的config.h被里面包含的文件foo.h,但你如何得到一个可选的 #define BUILD_WITH_OPTION_BAR在那里在编译时(的libfoo)?

我发现了这个相关的问题:add_definitions vs. configure_file但它没有讨论这实际上是如何完成的。

c++ cmake

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

如何获取直到特定日期发布的python包的版本号列表?

考虑拥有一个requirements.txt包含(未版本化)依赖项(python 包)列表的python文件。安装它们后(例如pip install -r requirements.txt),您可以调用pip freeze并获取所有已安装 python 包的(版本化)列表。

这将是当时可用的 python 包版本(及其依赖项)的快照。我需要生成的是同一个列表,但用于过去的日期(假设2018-06-12)。

我想从技术上讲,我只需要找到requirements.txt文件中包含的所有包的已发布版本。

理想情况下,会有一个命令pip install -r requirements.txt --before 2018-06-21,然后就调用pip freeze,但我在pip install --help. 我确实看到了一种指定另一个的方法--index-url,我可以想象从那个日期开始是否有存档索引,我可以指出pip它并且它应该可以工作?

还有一个--constraint选项,它:

使用给定的约束文件约束版本

但我猜在那种情况下我已经必须拥有日期约束版本?

python dependencies pip python-packaging

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

CMake:如何从目标链接列表中删除重复项?

我的链接器参数列表太长,此时我收到以下错误:

运行链接命令时出错:参数列表过长

我在应用程序中使用了不同的第三方库(包括Qt,OpenCV,PointCloudLibrary,VTK等),其中一些是我手动编译的,其他则是通过Homebrew在Mac OS X 10.7上安装的。

对于我的应用程序的实际构建设置,我使用CMake(2.8-9)。最近,我开始链接到PCL(PointCloudLibrary 1.6),这让我头疼,现在报告的错误。

我的CMake文件如下所示:

cmake_minimum_required(VERSION 2.6)
project(cmake_test)

add_definitions( -DBOOST_ALL_NO_LIB )

add_definitions( -DBOOST_ALL_DYN_LINK )

find_package(Boost COMPONENTS iostreams system filesystem regex thread date_time timer atomic locale graph exception REQUIRED)

if(Boost_FOUND)
    add_definitions("-DHAS_BOOST")
endif()

find_package(PCL REQUIRED)

include_directories(
    ${Boost_INCLUDE_DIRS}
    ${PCL_INCLUDE_DIRS}
)

link_directories(
    ${Boost_LIBRARY_DIRS}
    ${PCL_LIBRARY_DIRS}
)

add_definitions(
    ${PCL_DEFINITIONS}
)

add_executable(cmake_test cmake_test.cpp)

target_link_libraries(cmake_test
        ${Boost_LIBRARIES}
        ${PCL_COMMON_LIBRARIES}
        ${PCL_IO_LIBRARIES}
        ${PCL_FILTERS_LIBRARIES}
        ${PCL_FEATURES_LIBRARIES}
        ${PCL_GEOMETRY_LIBRARIES}
        ${PCL_SEGMENTATION_LIBRARIES}
        ${PCL_SURFACE_LIBRARIES}
        ${PCL_VISUALIZATION_LIBRARIES}
)
Run Code Online (Sandbox Code Playgroud)

主要问题似乎是目标链接库列表现在包含对所有boost库的多个引用。实际上,对于每个${PCL_***_LIBRARIES}完整${Boost_LIBRARIES}列表,都将一遍又一遍地添加。

我的问题是,如何从第三方库中删除作为依赖项出现的重复项,或者是否有人知道如何适当地处理此重复项。

请记住,我实际上正在使用此CMake中未列出的其他库(例如Qt,VTK),这些库会将更多项添加到目标链接列表中,最终使链接器无法处理。

谢谢!

linker boost cmake point-cloud-library

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

调用"find_path"后,Cmake"set"对同一个变量不起作用

在Cmake模块中,我试图找到不同的路径.在某些情况下,我想在最初使用相同变量调用"find_path"之后"设置"一个变量:

# general search for this include dir
find_path(LIBRARY_INCLUDE_DIR
  NAMES LibraryName/LibraryHeader.h
)

# specific option enabled by user
if(USE_OTHER_LIB)
find_path(OTHER_LIB_ROOT_DIR
  NAMES OtherLib/OtherLib.h
)
set(LIBRARY_INCLUDE_DIR ${OTHER_LIB_ROOT_DIR}/database/include)
endif(USE_OTHER_LIB)
Run Code Online (Sandbox Code Playgroud)

这种方法在Windows XP(CMake 2.8.1)下运行良好.但是,它在Mac OS 10.6(CMake 2.8.3)下无效.有人知道mac/windows版本之间是否有区别以及如何解决这个问题?

非常感谢!

windows macos cmake

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