我使用了hashlib(它取代了Python 2.6/3.0中的md5),如果我打开一个文件并将其内容放入hashlib.md5()函数中,它工作正常.
问题在于非常大的文件,它们的大小可能超过RAM大小.
如何在不将整个文件加载到内存的情况下获取文件的MD5哈希值?
您需要设置HOMEBREW_GITHUB_API_TOKEN为自制,避免速率限制,但你怎么把它添加到自制的配置?
有没有一个功能正在做什么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()类似的东西?
我正在研究一个相对简单,独立的" 流程启动器 ",我希望能够在Windows(XP,Vista,7),Linux(Ubuntu 10.10)以及Mac OS X(10.6)上工作.Linux和Windows基本上都可以工作,但我在使用Mac版时遇到了一些麻烦.我希望fork()和exec()功能将工作在Mac OS同样的方式,因为他们在Linux下工作.所以我的第一个问题是:
我当前的代码(在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下运行,因为我的子进程根本没有启动,而没有出现错误.
谢谢!
我想配置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来加载我的包.
我认为这是我的实际问题 …
根据这篇文章(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) 想象一下,我正在编译(一个静态)库libfoo.a,它提供了一个头文件foo.h. 我会链接到我的应用程序APP对libfoo.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)
我的问题是:我怎么知道我的里面APP这libfoo.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但它没有讨论这实际上是如何完成的。
考虑拥有一个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选项,它:
使用给定的约束文件约束版本
但我猜在那种情况下我已经必须拥有日期约束版本?
我的链接器参数列表太长,此时我收到以下错误:
运行链接命令时出错:参数列表过长
我在应用程序中使用了不同的第三方库(包括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),这些库会将更多项添加到目标链接列表中,最终使链接器无法处理。
谢谢!
在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版本之间是否有区别以及如何解决这个问题?
非常感谢!