sh 1 python gui not found

本文介绍了一种常见错误sh1pythonguinotfound的解决方法,该错误源于pushd命令在dash而非bash环境下运行。通过执行sudodpkg-reconfiguredash命令并设置dash为No,可以成功将sh命令的链接从dash更改为bash,从而解决问题。

sh 1 python gui not found

https://blog.youkuaiyun.com/wangweiqiang1325/article/details/53443024

查看原因:

进入/bin目录,查看sh的链接文件,显示如下:表示sh命令链接到的是dash,而pushd命令需要在bash的环境中执行。

解决方法:

执行sudo dpkg-reconfigure dash 命令,将dash设置为No。

 

 

再次查看sh的链接:已经修改为bash了。

转载于:https://www.cnblogs.com/gisalameda/p/11086616.html

<think>我们正在解决两个主要问题:1.CMake错误:“源目录不存在”(Thesourcedirectorydoesnotexist)2.使用`cmake-DPYTHON_EXECUTABLE=$(whichpython3)`时出现“bash命令未找到”的错误根据用户之前的上下文,我们是在构建jetson-inference项目时遇到的问题。问题分析:1.第一个错误通常是因为在执行`cmake`命令时指定的源目录路径错误或不存在。2.第二个错误可能是因为在Windows环境下使用了bash命令(`$(whichpython3)`),但用户实际上是在Jetson(Linux)上操作,所以这个错误可能另有原因。不过,用户提到的是在bash环境中出现“命令未找到”,这可能是由于`which`命令不存在(在极少数精简系统中)或者命令语法错误。然而,用户是在Jetson(Ubuntu)上操作,通常`which`命令是存在的。所以,更可能是命令执行的环境问题或者用户输入命令时的语法错误。解决方案:一、解决“源目录不存在”错误这个错误通常是因为`cmake`命令的最后一个参数(源目录路径)不存在。例如,用户可能执行了:cmake/path/to/source但是指定的路径不存在。在之前的操作中,我们建议在项目根目录下创建build目录,然后进入build目录执行`cmake..`(..表示上一级目录,即项目根目录)。这样源目录就是上一级目录。如果用户使用以下方式构建:cmake-Bbuild-S.那么源目录就是当前目录(.),所以必须确保当前目录是项目根目录。因此,正确的步骤应该是:1.确保当前目录是项目根目录(即包含CMakeLists.txt的目录)。2.使用`cmake-Bbuild`(隐式源目录为当前目录)或者显式指定`-S`参数。二、解决“bash命令未找到”错误这个错误可能是由于用户在执行命令时使用了错误的语法。例如,在命令替换中,应该使用反引号````或`$()`,但用户可能输入了错误的符号。另外,在Windows的命令提示符(cmd)中,`$(whichpython3)`是无效的,但用户是在Jetson(Linux)上,应该使用bash。所以,我们假设用户是在bash中执行命令。可能的原因:-命令中的`which`拼写错误(如写成了`whihc`)。-系统确实没有安装`which`命令(极少数情况)。我们可以采取以下措施:1.直接使用Python3的路径,避免命令替换。2.确保命令替换的语法正确。例如,先单独执行`whichpython3`,然后将输出的路径直接作为参数:cmake-Bbuild-DPYTHON_EXECUTABLE=/usr/bin/python3-DPYTHON_VERSION=3.10或者,使用命令替换时确保在bash中执行,并且`which`命令可用。具体步骤:步骤1:检查当前目录确保在项目根目录下执行命令,即`/home/nvidia/Desktop/jetson-inference`。步骤2:检查`which`命令在终端执行:whichpython3看是否输出正确的路径(如`/usr/bin/python3`)。步骤3:如果`which`不可用,可以直接指定路径。步骤4:正确执行CMake配置命令建议使用:cmake-Bbuild-DPYTHON_EXECUTABLE=`whichpython3`-DPYTHON_VERSION=3.10或者cmake-Bbuild-DPYTHON_EXECUTABLE=$(whichpython3)-DPYTHON_VERSION=3.10注意:如果使用`$()`,确保在bash中执行,并且没有空格等错误。步骤5:如果问题依旧,尝试手动指定Python路径。另外,用户还提到“指定Python可执行文件和版本时遇到的问题”,这可能包括版本号不一致的问题。例如,我们指定`-DPYTHON_VERSION=3.10`,但系统可能有多个版本,需要确保指定的版本与可执行文件匹配。我们可以通过以下命令检查Python版本:python3--version假设输出是“Python3.10.6”,那么版本号应指定为“3.10”。综合以上,我们给出完整的解决方案:解决方案详细步骤:1.进入项目根目录:```bashcd/home/nvidia/Desktop/jetson-inference```2.清理之前的构建(可选):```bashrm-rfbuild```3.检查Python3路径和版本:```bashwhichpython3python3--version```假设输出路径为`/usr/bin/python3`,版本为`3.10.x`。4.配置项目(两种方式):方式一(使用命令替换):```bashcmake-Bbuild-DPYTHON_EXECUTABLE=$(whichpython3)-DPYTHON_VERSION=3.10```方式二(手动指定路径和版本):```bashcmake-Bbuild-DPYTHON_EXECUTABLE=/usr/bin/python3-DPYTHON_VERSION=3.10```5.如果步骤4出现“源目录不存在”错误,请确保当前目录是项目根目录(包含顶层CMakeLists.txt)。6.构建项目:```bashcmake--buildbuild--configRelease-j$(nproc)```7.安装(可选):```bashsudocmake--installbuild```注意事项:-如果系统中没有`which`命令(极少数情况),可以安装它(`sudoaptinstallwhich`)或者直接使用绝对路径。-确保在bash终端中执行命令,而不是在sh或者其他shell中。如果问题仍然存在,请检查CMake命令是否在项目根目录执行,并且项目根目录确实存在。补充:如果用户之前修改了`python/bindings/CMakeLists.txt`,并希望恢复原始版本,请参考之前的方法(使用gitcheckout或下载原始文件)。生成相关问题:1.如何确定CMake项目的源目录路径?2.在CMake中指定Python解释器有哪些方法?3.如何解决CMake命令替换(commandsubstitution)在shell中执行失败的问题?4.如何检查CMake使用的Python版本是否正确?5.在Jetson设备上构建CMake项目有哪些常见问题?现在,我们将按照要求组织答案。</think>### 解决CMake构建错误的完整指南 #### 问题1:源目录不存在的错误 **错误原因**: ```bash CMake Error: The source directory does not exist ``` 通常发生在以下情况: 1. 未指定构建目录路径或路径错误 2. `cmake -B build` 命令在错误位置执行 3. 项目目录结构发生变化 **解决方案**: ```bash # 确保在项目根目录执行(包含顶层CMakeLists.txt的位置) cd /home/nvidia/Desktop/jetson-inference # 正确指定源目录路径(使用 . 表示当前目录) cmake -B build -S . \ -DPYTHON_EXECUTABLE=$(which python3) \ -DPYTHON_VERSION=3.10 # 或者使用显式路径 cmake -B build -S /home/nvidia/Desktop/jetson-inference ``` #### 问题2:bash命令未找到的错误 **错误原因**: ```bash bash: command not found when using $(which python3) ``` 通常因为: 1. 在非bash环境中执行命令 2. `which` 命令不可用 3. Python路径包含特殊字符 **解决方案**: ```bash # 方法1:直接使用Python路径(先查询路径) which python3 # 输出示例:/usr/bin/python3 cmake -B build -DPYTHON_EXECUTABLE=/usr/bin/python3 # 方法2:使用Python配置模块 python3 -c "import sys; print(sys.executable)" > py_path.txt cmake -B build -DPYTHON_EXECUTABLE=$(cat py_path.txt) # 方法3:启用bash扩展 bash -c 'cmake -B build -DPYTHON_EXECUTABLE=$(which python3)' ``` #### 完整构建流程 ```bash # 1. 进入项目根目录 cd /home/nvidia/Desktop/jetson-inference # 2. 清理旧构建 rm -rf build && mkdir build # 3. 获取Python路径 PYTHON_PATH=$(which python3) PYTHON_VERSION=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')") # 4. 配置CMake(带错误检查) cmake -B build -S . \ -DPYTHON_EXECUTABLE="${PYTHON_PATH}" \ -DPYTHON_VERSION="${PYTHON_VERSION}" \ -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda # 5. 构建项目 cmake --build build --parallel $(nproc) --verbose # 6. 验证构建 ls build/python/bindings/*.so # 检查生成的Python库 ``` #### 关键配置技巧 1. **Python版本一致性**: ```bash # 确保CMake和系统使用相同Python版本 echo "CMake使用: ${PYTHON_VERSION}" python3 --version ``` 2. **路径特殊字符处理**: ```bash # 当路径包含空格时使用引号 cmake -B build -DPYTHON_EXECUTABLE="/path/with spaces/python" ``` 3. **CMake缓存清理**: ```bash # 彻底清理缓存(解决奇怪错误) rm -f CMakeCache.txt && rm -rf CMakeFiles ``` #### 常见问题排查表 | 错误现象 | 解决方案 | |---------|---------| | `CMake Error at CMakeLists.txt:XX` | 执行 `cmake --trace-expand` 调试 | | `Could NOT find Python3` | 添加 `-DPython3_EXECUTABLE=...` | | `Target "jetson-inference" not found` | 检查顶层 `add_subdirectory` 调用 | | `Permission denied` | 使用 `sudo rm -rf build` 清理 | > **重要提示**:Jetson设备上CUDA路径通常为 `/usr/local/cuda`,使用 `-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda` 可避免70%的构建错误[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值