首先,对我所确定的显而易见的道歉是我对bash,shell和子进程的基本理解.
我正在尝试使用Python来自动调用一个名为Freesurfer的程序(实际上,我正在调用的子程序称为recon-all.)
如果我直接在命令行执行此操作,我将"源"一个名为mySetUpFreeSurfer.sh的脚本,除了设置三个环境变量之外什么都不做,然后"源"另一个脚本FreeSurferEnv.sh.FreesurferEnv.sh在我看来并没有做任何事情,只是设置了很多环境变量并向终端回应了一些东西,但它比其他bash脚本更复杂,所以我不确定.
这就是我现在所拥有的:
from subprocess import Popen, PIPE, call, check_output
import os
root = "/media/foo/"
#I got this function from another Stack Overflow question.
def source(script, update=1):
pipe = Popen(". %s; env" % script, stdout=PIPE, shell=True)
data = pipe.communicate()[0]
env = dict((line.split("=", 1) for line in data.splitlines()))
if update:
os.environ.update(env)
return env
source('~/scripts/mySetUpFreeSurfer.sh')
source('/usr/local/freesurfer/FreeSurferEnv.sh')
for sub_dir in os.listdir(root):
sub = "s" + sub_dir[0:4]
anat_dir = os.path.join(root, sub_dir, "anatomical")
for directory in os.listdir(anat_dir):
time_dir = os.path.join(anat_dir, directory)
for d in …Run Code Online (Sandbox Code Playgroud) 我在 Flask 中有一条警告闪现消息,该消息在用户尝试根据有关用户的背景信息提交表单之前出现。如果用户继续按照警告不要提交表单,他们就会被阻止并看到第二条闪现消息。我想在用户看到第二条消息之前清除第一条消息。
我已经阅读了关于 flash 消息的 Flask 文档,并尝试通过 google 搜索答案。我还阅读了一些Flask 源代码。我没有想到任何解决方案。
谁能帮我弄清楚如何清除闪烁消息?
我正在尝试在 Mac 上启动 Web 应用程序的本地版本,我需要告诉 docker-compose 不要尝试安装某些卷。我正在使用一个docker-compose.override.yml文件,但我所做的显然没有覆盖任何内容。
这是我的相关部分docker-compose.yml:
version: '3'
services:
web:
volumes:
- user-data:/usr/src/app/flask_brain_db/static/images/data
- /etc/letsencrypt:/etc/letsencrypt
nginx:
volumes:
- ./web/flask_brain_db/static:/usr/src/app/flask_brain_db/static
- user-data:/usr/src/app/flask_brain_db/static/images/data
- /etc/letsencrypt:/etc/letsencrypt
Run Code Online (Sandbox Code Playgroud)
这是我的相关部分docker-compose.override.yml:
web:
volumes:
- user-data:/usr/src/app/flask_brain_db/static/images/data
nginx:
volumes:
- ./web/flask_brain_db/static:/usr/src/app/flask_brain_db/static
- user-data:/usr/src/app/flask_brain_db/static/images/data
Run Code Online (Sandbox Code Playgroud)
当我运行时,docker-compose up我仍然收到与尝试安装 LetsEncrypt 驱动器相关的错误。如果我真的去实际注释掉这些行,docker-compose.yml我就不会再得到这个错误了。
我这样做错了吗?
我正在尝试制作一个上传文件的表单,但是文件数据未随请求发送。我正在手动导航到我的文件并点击提交。我的FileRequired验证程序失败。(如果我不包括在内,则该data字段form.scan_file为空。)
这是我的表格:
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed, FileRequired
class ScanForm(FlaskForm):
scan_file = FileField(validators=[FileAllowed(['nii', 'nii.gz', 'zip']), FileRequired()])
Run Code Online (Sandbox Code Playgroud)
这是我的views.py:
from flask import Blueprint, render_template, request, flash, redirect, url_for, session
from .models import Scan
from .forms import ScanForm
from .service import ScanService
from cookiecutter_mbam.utils import flash_errors
blueprint = Blueprint('scan', __name__, url_prefix='/scans', static_folder='../static')
@blueprint.route('/add', methods=['GET', 'POST'])
def add():
"""Add a scan."""
form = ScanForm(request.form)
if form.validate_on_submit():
f = form.scan_file.data
service = ScanService()
xnat_uri = …Run Code Online (Sandbox Code Playgroud) 当涉及到更广泛的网络问题时,尤其是 Docker,我是一个新手,我确信这一点在这个问题中会变得显而易见。
现在,我想要完成的相对简单的事情是在 Mac 上的 Docker 上启用 tcp 套接字(更进一步,了解从客户端计算机到哪里 ping 我的 Docker 主机)。我有点作弊,因为我没有描述我的最终目标,我知道这会导致 XY 问题,但我现在真正的目标是更好地理解 Docker 和网络,如果我能做到当我启用 tcp 套接字时,我会学到一些东西。
以下是障碍: 这是有关为 docker 守护进程启用 tcp 套接字的主要文档。但显然这个 dockerd 二进制文件在 Docker for Mac 上 不存在。
那么我如何完成类似的任务呢? 这个答案提出了一种可能性,但我遇到的一个问题是我不明白我的 docker 主机在该选项中的 IP 地址(这可能是因为我对网络问题感到困惑)。
另外,如果您单击鲸鱼,则会出现一个采用 JSON 对象的守护程序选项卡。也许我可以把我想监听的端口和IP地址放在那里?但使用什么语法呢?钥匙的名称是什么?这是在哪里记录的?如果答案在这里我不明白。
感谢您提供的任何帮助!
我有 Matlab 2022b,Windows 11。在 Matlabmex -setup cpp中
MEX configured to use 'Microsoft Visual C++ 2022' for C++ language compilation
Run Code Online (Sandbox Code Playgroud)
在命令提示符处,nvcc --version产生:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Mon_Oct_24_19:40:05_Pacific_Daylight_Time_2022
Cuda compilation tools, release 12.0, V12.0.76
Build cuda_12.0.r12.0/compiler.31968024_0
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此文件时,出现此错误:
Error using mex
Supported compiler not detected. For options, visit https://www.mathworks.com/support/compilers.
Error in mexcuda (line 168)
[varargout{1:nargout}] = mex(mexArguments{:});
Error in mexGPUall (line 7)
mexcuda -largeArrayDims spikedetector3.cu
Run Code Online (Sandbox Code Playgroud)
在 Matlab 中选择“MinGW64 …