小编bw4*_*4sz的帖子

Pyinstaller将opencv从Windows 10分发到Windows <10,缺少ucrt dlls api-ms-win-crt

我有一个使用OpenCV的Python 3.5 64位程序(Windows的tensorflow需要).我用pyinstaller分发它.

我用Windows 10构建了我的程序

/c/Python35/Scripts/pyinstaller -c DeepMeerkat.spec
Run Code Online (Sandbox Code Playgroud)

在我的计算机上,.exe构建并运行完美.在任何其他非Windows 10计算机上

import cv2
Run Code Online (Sandbox Code Playgroud)

返回

ImportError:DLL加载失败:找不到指定的模块.

我可以在pyInstaller线程上看到关于它的大量讨论,但我不能完全告诉如何将它付诸实践.依赖性walker说我缺少一些DLL

api-ms-win-crt-**.dll
Run Code Online (Sandbox Code Playgroud)

好的,从pyInstaller线程,我知道这些DLL存在

C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs
Run Code Online (Sandbox Code Playgroud)

基于架构的多个子文件夹下.

我尝试添加到我的.spec文件中

pathex=["C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/"],
Run Code Online (Sandbox Code Playgroud)

或者我的特定架构

pathex=["C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/arm"],
Run Code Online (Sandbox Code Playgroud)

我认为这是在这里建议的

"安装适用于Windows 10的Windows软件开发工具包(SDK)并展开.spec文件以包含所需的DLL,请参阅上述链接中的"分发使用通用CRT的软件",编号为6.

那没有任何效果.我收到了数以百计的错误

121472 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python35\DLLs\_ssl.pyd
Run Code Online (Sandbox Code Playgroud)

但我可以在这里看到DLL

C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\arm
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

那么我就把整个文件夹复制到了posthoc

cp -r "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/" dist/Lib/
Run Code Online (Sandbox Code Playgroud)

但目前尚不清楚如何将这些连接到.exe.显然,让pyInstaller事先知道是可取的.

我也试过了

/c/Python35/Scripts/pyinstaller --path "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/arm" -c DeepMeerkat.spec
Run Code Online (Sandbox Code Playgroud)

它仍然没有找到它们

我也尝试将该文件夹添加到PATH.有任何想法吗?

python windows opencv pyinstaller

11
推荐指数
1
解决办法
4394
查看次数

如何在预测之间保持张量流会话开放?从SavedModel加载

我训练了一个张量流模型,我想从numpy数组运行预测.这适用于视频中的图像处理.我会将图像传递给模型.并非每一帧都通过.

我在这样的会话中重新加载我的SavedModel

def run(self):                
    with tf.Session(graph=tf.Graph()) as sess:
        tf.saved_model.loader.load(sess,
                    [tf.saved_model.tag_constants.SERVING], "model")
Run Code Online (Sandbox Code Playgroud)

如果我将图像列表(self.tfimages)传递给预测,我的代码将完美运行.凝聚于:

    softmax_tensor = sess.graph.get_tensor_by_name('final_ops/softmax:0')
    predictions = sess.run(softmax_tensor, {'Placeholder:0': self.tfimages})
Run Code Online (Sandbox Code Playgroud)

但我不会立刻拥有所有图像.我是否真的必须每次从文件重新加载模型(需要2分钟以上).

我想做这样的事情

class tensorflow_model:
def __init__(self):                
    with tf.Session(graph=tf.Graph()) as self.sess:
        tf.saved_model.loader.load(self.sess,
                    [tf.saved_model.tag_constants.SERVING], "model")
def predict(self):

        # Feed the image_data as input to the graph and get first prediction
        softmax_tensor = self.sess.graph.get_tensor_by_name('final_ops/softmax:0')

        predictions = self.sess.run(softmax_tensor, {'Placeholder:0': self.tfimages})
Run Code Online (Sandbox Code Playgroud)

但收益率

builtins.RuntimeError:尝试使用已关闭的会话

有没有办法保持会话打开,或者可能独立于会话加载SavedModel?

编辑我尝试了第一个答案,分两步创建一个会话:

sess=tf.Session(graph=tf.Graph())
sess
<tensorflow.python.client.session.Session object at 0x0000021ACBB62EF0>
tf.saved_model.loader.load(sess,[tf.saved_model.tag_constants.SERVING], "model")
Traceback (most recent call last):
  Debug Probe, prompt 138, line …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

10
推荐指数
1
解决办法
8322
查看次数

在docker镜像上验证Google Cloud服务帐户

我在docker镜像内外发现了不同的行为,用于验证Google服务帐户.

外.成功.

C:\Users\Ben\AppData\Local\Google\Cloud SDK>gcloud auth activate-service-account 773889352370-compute@developer.gserviceaccount.com --key-file C:/Users/Ben/Dropbox/Google/MeerkatReader-d77c0d6aa04f.json --project api-project-773889352370
Activated service account credentials for: [773889352370-compute@developer.gserviceaccount.com]
Run Code Online (Sandbox Code Playgroud)

运行docker容器,将.json密钥传递给tmp目录.

C:\Users\Ben\AppData\Local\Google\Cloud SDK>docker run -it -v C:/Users/Ben/Dropbox/Google/MeerkatReader-d77c0d6aa04f.json:/tmp/MeerkatReader-d77c0d6aa04f.json  --rm -p "127.0.0.1:8080:8080" --entrypoint=/bin/bash  gcr.io/cloud-datalab/datalab:local-20161227
Run Code Online (Sandbox Code Playgroud)

在docker中,确认文件在那里

root@4a4a9314f15c:/tmp# ls
MeerkatReader-d77c0d6aa04f.json  npm-24-b7aa1bcf  npm-45-fd13ef7c  npm-7-22ec336e
Run Code Online (Sandbox Code Playgroud)

运行与以前相同的命令.失败.

root@4a4a9314f15c:/tmp# gcloud auth activate-service-account 773889352370-compute@developer.gserviceaccoun
t.com --key-file MeerkatReader-d77c0d6aa04f.json --project api-project-773889352370
ERROR: (gcloud.auth.activate-service-account) Failed to activate the given service account. Please ensure provided key file is valid.
Run Code Online (Sandbox Code Playgroud)

什么可能导致此错误?更广泛地说,建议的传递凭证的策略是什么.我试过这个,它也失败了.我正在使用cloudml API和云视觉,我想在每次运行开始时避免使用手动gcloud init.

编辑:显示gcloud信息

root@7ff49b26484f:/# gcloud info --run-diagnostics
Network diagnostic detects and fixes …
Run Code Online (Sandbox Code Playgroud)

docker google-cloud-platform gcloud

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

将 docker 用于谷歌云数据流依赖项

我对使用 Google Cloud Dataflow 并行处理视频很感兴趣。我的工作同时使用 OpenCV 和 tensorflow。是否可以只在 docker 实例中运行工作人员,而不是按照描述从源安装所有依赖项:

https://cloud.google.com/dataflow/pipelines/dependencies-python

我本来希望有一个 docker 容器的标志,它已经位于谷歌容器引擎中。

python opencv google-cloud-platform google-cloud-dataflow

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

来自Windows的OpenCV构建错误"RC对象"

我从github下载了最新的源代码并配置了opencv和contrib模块.我似乎可以建立.我已经关闭了FFMPEG,我之前手动下载了.dll,我知道这是最近的一个问题.我过去成功了.但现在我要到了

[ 50%] Building RC object modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj
C:\mingw\bin\windres.exe: invalid option -- W
Usage: C:\mingw\bin\windres.exe [option(s)] [input-file] [output-file]
 The options are:
  -i --input=<file>            Name input file
  -o --output=<file>           Name output file
  -J --input-format=<format>   Specify input format
  -O --output-format=<format>  Specify output format
  -F --target=<target>         Specify COFF target
     --preprocessor=<program>  Program to use to preprocess rc file
     --preprocessor-arg=<arg>  Additional preprocessor argument
  -I --include-dir=<dir>       Include directory when preprocessing rc file
  -D --define <sym>[=<val>]    Define SYM when preprocessing rc file
  -U --undefine <sym>          Undefine SYM when …
Run Code Online (Sandbox Code Playgroud)

python windows opencv makefile cmake

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

R Data.table用于计算跨多列的摘要统计信息

我有一个类似的问题:R:data.table:搜索多列和设置数据类型,但这个问题没有得到完全解答.我有一个成对表,在概念上看起来像下面的那个.该表是将非常大的距离矩阵转换为data.table(> 100,000,000行)的结果,使得比较a,b与b,a相同.但是,a和b可能出现在V1或V2列中.我想使用data.table的查询样式计算简单的汇总统计信息,但我还没有弄清楚如何在任一列中选择键.这可能吗?

我已尝试在任一方向设置密钥,但这只返回该列的数据.我也尝试使用list(),但是返回交集(可以理解),我希望有一个by = key1 | key2,但没有这样的运气.


> set.seed(123)
> 
> #create pairwise data
> a<-data.table(t(combn(3,2)))
> #create column that is equal both ways, 1*2 == 2*1
> dat<-a[,data:=V1*V2]
> dat
   V1 V2 data
1:  1  2    2
2:  1  3    3
3:  2  3    6
#The id ==2 is the problem here, the mean should be 4 ((2+6)/2)

> #set keys
> setkey(dat,V1,V2)
> 
> #One way data
> dat[,c("MEAN","VAR"):=list(mean(data),var(data)),by=V1]
> dat
   V1 V2 data MEAN VAR …
Run Code Online (Sandbox Code Playgroud)

r bigdata data.table

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

Pandoc和Rstudio Knitr内存泄漏

我正在尝试在具有15GB内存的私有ubuntu亚马逊ec2实例上编织.Rmd文件。我从源代码安装了rstudio(RStudio 0.99.903-Ubuntu 12.04 + / Debian 8+(64位)),没有问题,然后在此处链接了随附的pandoc版本。

$ sudo ln -s /usr/lib/rstudio/bin/pandoc/pandoc /usr/local/bin
$ sudo ln -s /usr/lib/rstudio/bin/pandoc/pandoc-citeproc /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

并确认其在PATH中

ubuntu@ip-172-31-46-87:~$ pandoc -v
pandoc 1.15.2
Run Code Online (Sandbox Code Playgroud)

从命令行调用编织器

Rscript -e "rmarkdown::render('Observed.Rmd')" &> run.txt
Run Code Online (Sandbox Code Playgroud)

我可以成功地进行小型测试运行。

但是,当我尝试较大的运行时,会出现错误

/usr/local/bin/pandoc +RTS -K512m -RTS SingleSpecies.utf8.md --to html --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output SingleSpecies.html --smart --email-obfuscation none --self-contained -M2GB +RTS -K64m -RTS --standalone --section-divs --table-of-contents --toc-depth 3 --template /home/ubuntu/R/x86_64-pc-linux-gnu-library/3.3/rmarkdown/rmd/h/default.html --number-sections --variable 'theme:spacelab' --include-in-header /tmp/RtmpWXb9A4/rmarkdown-str58570a61934.html --mathjax --variable 'mathjax-url:https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' --no-highlight --variable highlightjs=/home/ubuntu/R/x86_64-pc-linux-gnu-library/3.3/rmarkdown/rmd/h/highlight --variable navigationjs=/home/ubuntu/R/x86_64-pc-linux-gnu-library/3.3/rmarkdown/rmd/h/navigation-1.0 
Error: pandoc document conversion failed with …
Run Code Online (Sandbox Code Playgroud)

memory ubuntu pandoc rstudio knitr

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

将csv写入谷歌云存储

我想了解如何将多行 csv 文件写入谷歌云存储。我只是没有遵循文档

接近这里: 无法读取上传到谷歌云存储桶的 csv 文件

例子:

from google.cloud import storage
from oauth2client.client import GoogleCredentials
import os

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "<pathtomycredentials>"

a=[1,2,3]

b=['a','b','c']

storage_client = storage.Client()
bucket = storage_client.get_bucket("<mybucketname>")

blob=bucket.blob("Hummingbirds/trainingdata.csv")

for eachrow in range(3):
    blob.upload_from_string(str(a[eachrow]) + "," + str(b[eachrow]))
Run Code Online (Sandbox Code Playgroud)

这让你在谷歌云存储上只有一行

3,c
Run Code Online (Sandbox Code Playgroud)

显然它每次打开一个新文件并写下这一行。

好的,添加一个新行 delim 怎么样?

for eachrow in range(3):
    blob.upload_from_string(str(a[eachrow]) + "," + str(b[eachrow]) + "\n")
Run Code Online (Sandbox Code Playgroud)

添加换行符,但再次从头开始写入。

有人可以说明这种方法是什么吗?我可以将所有行合并为一个字符串,或者编写一个临时文件,但这看起来非常难看。

也许作为文件打开?

python csv google-cloud-storage

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

GoogleCloud DataFlow 无法将文件写入临时位置

我正在 Google 云数据流上构建光束管道。

我收到错误消息,指出云数据流无权写入临时目录。

在此输入图像描述

这很令人困惑,因为显然数据流能够写入存储桶,它创建了一个临时文件夹。

在此输入图像描述

为什么我能够写入暂存文件夹,但不能写入临时文件夹?

我正在计算引擎上的 Docker 容器内运行。我已通过我的服务帐户进行了完全身份验证。

PROJECT=$(gcloud config list project --format "value(core.project)")
BUCKET=gs://$PROJECT-testing

python tests/prediction/run.py \
    --runner DataflowRunner \
    --project $PROJECT \
    --staging_location $BUCKET/staging \
    --temp_location $BUCKET/temp \
    --job_name $PROJECT-deepmeerkat \
    --setup_file tests/prediction/setup.py
Run Code Online (Sandbox Code Playgroud)

编辑

回应@alex amato

  1. 该存储桶属于该项目还是属于另一个项目?是的,当我进入该项目的主屏幕时,这是列出的四个桶之一。我通常从这个存储桶上传数据并与其他谷歌云服务(云视觉 API)进行交互。

  2. 请您提供完整的错误消息。

    “(8d8bc4d7fc4a50bd):无法将文件写入临时位置'gs://api-project-773889352370-testing/temp/api-project-773889352370-deepmeerkat.1498771638.913123'。请确保此目录的存储桶存在,并且运行工作流的项目具有写入该工作流所需的权限。”

    “8d8bc4d7fc4a5f8f):工作流程失败。原因:(8d8bc4d7fc4a526c):对临时位置或暂存文件的一项或多项访问检查失败。请参阅其他错误消息以了解详细信息。有关安全和权限的更多信息,请参阅https://cloud .google.com/dataflow/security-and-permissions。”

  3. 您能否确认尚不存在与您尝试使用的 GCS 文件夹路径名称相匹配的现有 GCS 对象?

是的,存储桶中没有名为 temp 的文件夹。

  1. 您能否验证您拥有的权限是否与您运行的成员相匹配

Bucket权限具有全局管理员权限

在此输入图像描述

与我的 gcloud 身份验证匹配

在此输入图像描述

python google-cloud-storage gcloud google-cloud-dataflow apache-beam

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

Python EXIF找不到拍摄日期信息,但通过Windows属性查看时存在

我需要按拍摄日期提取和组织照片。Windows 10、Python 2.7。我一直在这样做

from PIL import Image
def get_date_taken(path):
    return Image.open(path)._getexif()[36867]
Run Code Online (Sandbox Code Playgroud)

下列的:

使用 PIL 从 EXIF 数据获取照片拍摄的日期和时间

这对于某些照片来说非常有用。

在此输入图像描述

伟大的。现在抓取一组不同的图像,新相机,属性看起来相似。

在此输入图像描述

但字典完全不同

Image.open(image)._getexif()[36867]
Traceback (most recent call last):
  Debug Probe, prompt 369, line 1
KeyError: 36867
Image.open(image)._getexif()
{36864: '0220', 37121: '\x01\x02\x03\x00', 40962: 2048, 40963: 1536, 40960: '0100', 40961: 1, 296: 2, 34665: 90, 34855: 1600, 531: 2, 282: (72, 1), 283: (72, 1), 37500: '\x01\xf1\x03\x00\x03\x00\x00\x00\x11 ....
Run Code Online (Sandbox Code Playgroud)

我也尝试过exifread

a=exifread.process_file(open(image,'rb'))
a.keys()
['EXIF MakerNote', 'Image ExifOffset', 'EXIF ExposureTime', 'EXIF ComponentsConfiguration', 'Image YCbCrPositioning', 'Image XResolution', 'EXIF …
Run Code Online (Sandbox Code Playgroud)

python exif python-imaging-library

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