retrive all api under FreeCAD (Python) - python

I am trying to get a tree of function-API under FreeCAD which is defined as App inside freecad always.
My goal is to find in the API where the OpenGL context is used and how it is used so I can inject my own OpenGL code/other libraries.
Here is the code
import FreeCAD as App
import FreeCADGui as Gui
from anytree import Node, RenderTree
from anytree.exporter import DotExporter
from inspect import getmembers, isfunction
from pkgutil import iter_modules
directory="E:/TEMP/DOC/"
MainNoid=Node("FREECAD")
def retriveOneObj(_objName,nodename):
mainNode=nodename
_OldNode=nodename
try:
for objS in getmembers(_objName):
Gui.updateGui()
for tobj in getmembers(objS):
if type(tobj) is tuple:
nObj=Node(str(tobj),_OldNode)
else:
nObj=Node(tobj.__name__,_OldNode)
return mainNode
except Exception as err:
print (err)
def retriveAll():
freecad=Node(App.__name__)
allNode=retriveOneObj(App,freecad)
DotExporter(allNode).to_picture(directory+"freecad.png")
retriveAll()
I get the error below :
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 4, in retriveAll
File "D:\Users\...\Downloads\FreeCAD\bin\lib\site-packages\anytree\exporter\dotexporter.py", line 272, in to_picture
check_call(cmd)
File "D:\Users\...\Downloads\FreeCAD\bin\lib\subprocess.py", line 359, in check_call
retcode = call(*popenargs, **kwargs)
File "D:\Users\...\Downloads\FreeCAD\bin\lib\subprocess.py", line 340, in call
with Popen(*popenargs, **kwargs) as p:
File "D:\Users\...\Downloads\FreeCAD\bin\lib\subprocess.py", line 858, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "D:\Users\...\Downloads\FreeCAD\bin\lib\subprocess.py", line 1311, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The file can not be found
This is on Windows10
Note: You need to run this inside FreeCAD and install the libraries using pip found under the \FreeCAD\bin\Scripts folder

Related

python subprocess create directory

import sys
import subprocess
def generateFiles(numFiles):
for i in range(0,numFiles):
postfixDir = str(i)
subprocess.check_call(['mkdir','example' + postfixDir])
return
def main():
numFiles = int(sys.argv[1])
generateFiles(numFiles)
main()
after i enter commandline python .\batchingCommands.py 5
it showing the following erros:
PS E:\Projects\Python_Projects\Python_Automation\Scripts> python .\batchingCommands.py 5
Traceback (most recent call last):
File "E:\Projects\Python_Projects\Python_Automation\Scripts\batchingCommands.py", line 13, in <module>
main()
File "E:\Projects\Python_Projects\Python_Automation\Scripts\batchingCommands.py", line 11, in main
generateFiles(numFiles)
File "E:\Projects\Python_Projects\Python_Automation\Scripts\batchingCommands.py", line 6, in generateFiles
subprocess.check_call(['mkdir','example' + postfixDir])
File "E:\Development_tools\Python39\lib\subprocess.py", line 368, in check_call
retcode = call(*popenargs, **kwargs)
File "E:\Development_tools\Python39\lib\subprocess.py", line 349, in call
with Popen(*popenargs, **kwargs) as p:
File "E:\Development_tools\Python39\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "E:\Development_tools\Python39\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
i'm trying to create directory automatically
Python is telling you it asked the operating system to run the program mkdir, which doesn't exist. Unlike in unix, mkdir isn't an actual program on Windows - it's built into powershell and command.com themselves.
To instruct python to run the given command as arguments to a shell - instead of a raw program - use the shell kwarg.
>>> subprocess.check_call(['mkdir', 'foo'], shell=True)
0

Python Minecraft Launcher Lib File Not Found Error

I wanted to create a Minecraft Launcher using Python today, but the game cannot be started.
My Code:
import minecraft_launcher_lib
import subprocess
minecraft_directory = "C:\\Users\\Mert KAPLANDAR\\AppData\\Roaming\\.minecraft"
options = minecraft_launcher_lib.utils.generate_test_options()
minecraft_command = minecraft_launcher_lib.command.get_minecraft_command("1.8.9", minecraft_directory, options)
subprocess.call(minecraft_command)
Error:
Traceback (most recent call last):
File "C:\Users\Mert KAPLANDAR\Desktop\launcher.py", line 10, in <module>
subprocess.call(str(minecraft_command))
File "C:\Users\Mert KAPLANDAR\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 349, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Users\Mert KAPLANDAR\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\Mert KAPLANDAR\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Sistem belirtilen dosyayı bulamıyor
#Mert Kaplander, I would believe the error might be because you don't have that version of Minecraft installed. You can check with the following method:
minecraft_launcher_lib.utils.get_installed_versions(minecraft_dir)
example:
import subprocess
import minecraft_launcher_lib
from colorama import Fore, init
for version in minecraft_launcher_lib.utils.get_installed_versions(minecraft_dir):
print(Fore.GREEN+ f"{version}")
Other than that, your code is an exact copy from the documentation. So I don't see an other error.

Pyflink get_gateway() method is not working

I am using PyCharm to run simple pyflink latest 1.13 example (it is only two lines). But the get_gateway() method is not working.
For the interpreter I created virtual environment and use it in my PyCharm project. I also downloaded Java8.
I tried many steps to solve the issue but
from pyflink.common.serialization import Encoder
from pyflink.common.typeinfo import Types
from pyflink.datastream import StreamExecutionEnvironment
from pyflink.datastream.connectors import StreamingFileSink
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
env = StreamExecutionEnvironment.get_execution_environment()
env.set_parallelism(1)
C:\Users\myuser\AppData\Local\Programs\Python\Python38\myvenv\Scripts\python.exe C:/Users/myuser/PycharmProjects/pythonProject3/main.py
Hi, PyCharm
Traceback (most recent call last):
File "C:/Users/myuser/PycharmProjects/pythonProject3/main.py", line 19, in <module>
print_hi('PyCharm')
File "C:/Users/myuser/PycharmProjects/pythonProject3/main.py", line 13, in print_hi
env = StreamExecutionEnvironment.get_execution_environment()
File "C:\Users\myuser\AppData\Local\Programs\Python\Python38\myvenv\lib\site-packages\pyflink\datastream\stream_execution_environment.py", line 688, in get_execution_environment
gateway = get_gateway()
File "C:\Users\myuser\AppData\Local\Programs\Python\Python38\myvenv\lib\site-packages\pyflink\java_gateway.py", line 62, in get_gateway
_gateway = launch_gateway()
File "C:\Users\myuser\AppData\Local\Programs\Python\Python38\myvenv\lib\site-packages\pyflink\java_gateway.py", line 106, in launch_gateway
p = launch_gateway_server_process(env, args)
File "C:\Users\myuser\AppData\Local\Programs\Python\Python38\myvenv\lib\site-packages\pyflink\pyflink_gateway_server.py", line 221, in launch_gateway_server_process
return Popen(command, stdin=PIPE, preexec_fn=preexec_fn, env=env)
File "C:\Users\myuser\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 858, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\myuser\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 1311, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
See similar question here for description: https://stackoverflow.com/a/71840491/272023
JAVA_HOME was not pointing to a valid Java installation.

forced alignment with aneas

I am trying to build a simple dataset for speech recognition using aneas, following the instruction here. However I'm stuck at the forced alignment, here is my code
from aeneas.executetask import ExecuteTask
from aeneas.task import Task
import os
import numpy
config_string = "task_language=eng | is_text_type=plain | os_task_file_format=json"
task = Task (config_string=config_string)
task.audio_file_path_absolute = "D:/documents/AI/open_door.mp3"
task.text_file_path_absolute = "D:/documents/AI/open_door.txt"
task.sync_map_file_path_absolute = "D:/documents/AI/syncmap.json"
ExecuteTask(task).execute()
task.output_sync_map_file()
Which gives the following error:
Traceback (most recent call last):
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aeneas\ffprobewrapper.py", line 222, in read_properties
proc = subprocess.Popen(
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aeneas\audiofile.py", line 357, in read_properties
properties = FFPROBEWrapper(
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aeneas\ffprobewrapper.py", line 233, in read_properties
self.log_exc(u"Unable to call the '%s' ffprobe executable" % (self.rconf[RuntimeConfiguration.FFPROBE_PATH]), exc, True, FFPROBEPathError)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aeneas\logger.py", line 351, in log_exc
raise raise_type(raise_message)
aeneas.ffprobewrapper.FFPROBEPathError: Unable to call the 'ffprobe' ffprobe executable : [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\documents\AI\forced_alignment.py", line 9, in <module>
task.audio_file_path_absolute = "D:/documents/AI/open_door.mp3"
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aeneas\task.py", line 120, in audio_file_path_absolute
self._populate_audio_file()
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aeneas\task.py", line 241, in _populate_audio_file
self.audio_file.read_properties()
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aeneas\audiofile.py", line 363, in read_properties
self.log_exc(u"Unable to call ffprobe executable", None, True, AudioFileProbeError)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aeneas\logger.py", line 351, in log_exc
raise raise_type(raise_message)
aeneas.audiofile.AudioFileProbeError: Unable to call ffprobe executable
[Finished in 0.4s]
Intuitively, I think it is because of the file paths, but changing it doesn't seem to work. I have never worked with python before so show me where I did wrong. Thank you.
I'm pretty sure it's because ffprobe isn't in your system's environmental variables.
Have you tried running python -m aeneas.diagnostics and is ffprobe in your path? Look into adding programs to your Path/system environment variables.

Execute Robot Framework file from python script

from subprocess import call
import os
call(['robot '+os.getcwd()+'\\aaa.robot'])
file_dir: D:/aaa/test/aaa.robot
script for now in same dir
Output:
Traceback (most recent call last):
File "__init.py", line 7, in <module>
call(['robot '+os.getcwd()+'\\aaa.robot'])
File "C:\Python27\lib\subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 710, in __init_
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 958, in _execut
startupinfo)
WindowsError: [Error 2] Nie mo┐na odnalečŠ okreťlonego pliku
I just cant handle it. I dont get why in python tunning anything is so complicated :(
I want same result as this line (written directly to cmd):
/>robot aaa.robot
Here is another way
import robot
logFile = open('mylog.txt', 'w')
robot.run("tmp.robot",stdout=logFile)
subprocess expects a list but you're inputting a string ('robot '+os.getcwd()+'\\aaa.robot').
Try:
call(['C:/Python27/python.exe', '-m', 'robot', 'D:/aaa/test/aaa.robot'])
or
call(['C:/Python27/Scripts/robot.bat', 'D:/aaa/test/aaa.robot'])

Categories

Resources